Я не уверен, что это так, но, судя по вашему сообщению, я предполагаю, что это может быть тот случай, когда при каждой проверке вы инициируете новое соединение с сервером MySQL. Если это действительно так, вы можете просто подключиться один раз, прежде чем выполнять эту проверку, и выполнить все будущие запросы, связанные с этим соединением.
Кроме того, хорошим вариантом оптимизации было бы введение индексов в MySQL, которые значительно ускорили бы поиск товаров, введение индекса для тех столбцов таблицы товаров, на которые вы чаще всего ссылаетесь в своей функции поиска php.
Кроме того, вы можете увеличить размер буфера MySQL до 256 МБ, чтобы кэшировать большую часть результатов, а также использовать InnoDB, чтобы вам не нужно было блокировать всю таблицу каждый раз, когда вы выполняете проверку, а также ввод функция.