Local MySQL instance running extremely slow compared to remote version
You have at least one bug in your function that allows it to enter an infinite loop on bad input data.  Care always has to be taken with loops in stored programs, to be certain this doesn't happen, regardless of the input.  I haven't analyzed this thoroughly, so there may be other cases that can break it, but here's the one I spotted.

You're using the input variable strValue internally, and it's a TINYTEXT, which is limited to 2^8-1 (255) characters.  But then, you're appending a trailing space.

SET strValue = CONCAT(strValue, " ");


What happens when your input value is >= 255 characters?

mysql&gt; SELECT SOUNDEX_SPLITTED(REPEAT('a',255),',');
-- nothing happens


You have an infinite loop, because you never find the trailing space you're expecting, so this...

WHILE spaceLast &lt; strLength DO


...remains true forever, because this...

SET strValue = CONCAT(strValue, " ");


...did not actually add a space.  It couldn't, because there's no room.  So the value was truncated back to its original, without a trailing space.

Actually, it's not true that nothing happens.  There's a warning generated, if the input is actually larger than 255 characters, and truncated at the input of the function... but you'll never see it, because it won't be visible until after the function runs.

+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1265 | Data truncated for column 'strValue' at row 1 |
+---------+------+-----------------------------------------------+


If the input data is exactly 255 characters, there's a similar warning that should be generated within the function when you try to concatenate that single space, but Oracle has mangled the proper handling of the diagnostics area within running programs in a misguided attempt to make the right errors show up at the right time.  Even if it were there, though, you wouldn't see it, since the function is still running in an endless loop.

I'm not suggesting the following is the correct fix, but will easily demonstrate the problem (works with MySQL 5.5 and up):

SET strValue = CONCAT(strValue, " ");
-- verify that we actually did just now add a trailing space 
IF strValue NOT RLIKE '[[:space:]]$' THEN
  SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'string overflow';
END IF;


Now...

mysql&gt; SELECT SOUNDEX_SPLITTED(REPEAT('a',255),',');
ERROR 1644 (45000): string overflow


A better solution might be to use an internal variable that's of a longer type than the input, and copy the input plus the trailing space into that new variable, or modify the code to find the end in a different way, so that the trailing space isn't required.