Вместо использования SELECT COUNT(*)
просто используйте IF EXISTS
. IF EXISTS
может остановить сканирование, как только найдет совпадение, в то время как COUNT(*)
необходимо пройти всю таблицу, чтобы подсчитать это количество.
Итак, вы получите что-то вроде: (Я не очень много использую MySQL, поэтому я не уверен в синтаксисе и скопировал ваш синтаксис, который мне не совсем подходит ... )
SET keyLength = (LENGTH(key)-1);
WHILE keyLength >=1 DO
IF EXISTS (SELECT * FROM keytable
WHERE I ScreeningKey = (SELECT SUBSTRING(key)-,1,keyLength))) THEN
SELECT SUBSTRING(key)-,1,keyLength INTO bestMatchScreeningKey;
/*go to step4*/
LEAVE Step4;
END IF;
SET keyLength = keyLength-1;
END WHILE;