Stored Procedure Is Slower Than Query Due to Collation
When declaring HEX strings such as UUIDs, or when declaring other strings with limited character set needs, such as country_code, postal_code, zip_code, etc, declare them to be CHARACTER SET ascii.  It can be applied just to the column, letting the rest of your columns be utf8mb4 or whatever.

And be consistent between tables so that JOIN works efficient.  And, as Rolando says`, be consistent with Stored Routine arguments, etc.

You can either let the collation for ascii be defaulted, or you can be explicit.  But be sure to be consistent.  Mismatched collation is as bad for performance as mismatched character set.

(If such fields are already latin1, there is no need to switch to ascii.)

UUIDs have a nasty problem when the dataset becomes huge.  Because of the seeming randomness of the strings, caching becomes useless when the table is bigger than cache.  One small improvement is to convert to BINARY(16) to save space and make it slightly more cacheable.  More discussion.

BTW, SHOW CREATE PROCEDURE procname \G provides the info at the end.  For example:

mysql&gt; show create function GCDist\G
*************************** 1. row ***************************
            Function: GCDist
            sql_mode:
     Create Function: CREATE DEFINER=`root`@`127.0.0.1` FUNCTION `GCDist`(
    ...
BEGIN
    ...
END
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci