Я пытаюсь написать функцию поиска для веб-сайта, и я решил использовать временные таблицы MySQL для обработки ввода данных по следующему запросу:
CREATE TEMPORARY TABLE `patternmatch`
(`pattern` VARCHAR(".strlen($queryLengthHere)."))
INSERT INTO `patternmatch` VALUES ".$someValues
Где $someValues
- это набор данных с макетом ('some', 'search', 'query')
- или в основном то, что пользователь искал. Затем я просматриваю основную таблицу images
на основе данных в таблице patternmatch
следующим образом:
SELECT images.* FROM images JOIN patternmatch ON (images.name LIKE patternmatch.pattern)
Затем я применяю эвристическую или скоринговую систему, основанную на том, насколько хорошо каждый результат соответствует входу и отображает результаты с помощью этой эвристики и т.д.
Мне интересно, сколько накладных расходов требуется для создания временной таблицы? Я понимаю, что они существуют только в сеансе и отбрасываются, как только заканчивается сеанс, но если у меня есть сотни тысяч запросов в секунду, какие проблемы с производительностью я могу встретить? Есть ли лучший способ реализации функции поиска?