Если вы ищете целое слово, гораздо лучшим решением будет использование индекса FULLTEXT.Итак, ваша таблица должна быть MyISAM (если это не так, создайте одну таблицу, которую вы будете использовать только для поиска, и установите связь между ней и вашей таблицей) ... затем создайте индекс FULLTEXT для столбцов, которые вы ищете,и сделайте запрос, подобный этому:
SELECT * FROM mytable WHERE MATCH (accountholder, alternatename, payeename)
AGAINST ('+John' IN BOOLEAN MODE);
..., который действительно повысит вашу производительность.
Вы можете найти хорошее начало здесь .