Я пытаюсь оптимизировать поиск в своем словаре (109 000 записей, MyISAM, FULLTEXT), и теперь я сравниваю производительность MATCH() AGAINST()
с REGEXP '[[:<:]]keyword1[[:>:]]' AND table.field REGEXP '[[:<:]]keyword2[[:>:]]'
.
Используя два ключевых слова, яполучить (внутри PhpMyAdmin) 0,0000 секунд или 0,0010 секунд для запроса MATCH() AGAINST()
против 0,1962 секунд или 0,2190 секунд для регулярного выражениязапрос.Является ли скорость единственным показателем, который здесь имеет значение?Какой запрос мне выбрать (оба, кажется, дают одинаковые результаты)?Это очевидно - быстрее?
Вот полные запросы:
SELECT * FROM asphodel_dictionary_unsorted
JOIN asphodel_dictionary_themes ON asphodel_dictionary_unsorted.theme_id = asphodel_dictionary_themes.theme_id
LEFT JOIN asphodel_dictionary_definitions ON asphodel_dictionary_unsorted.term_id = asphodel_dictionary_definitions.term_id
WHERE MATCH (asphodel_dictionary_unsorted.english)
AGAINST ('+boiler +pump' IN BOOLEAN MODE)
и
SELECT * FROM asphodel_dictionary_unsorted
JOIN asphodel_dictionary_themes ON asphodel_dictionary_unsorted.theme_id = asphodel_dictionary_themes.theme_id
LEFT JOIN asphodel_dictionary_definitions ON asphodel_dictionary_unsorted.term_id = asphodel_dictionary_definitions.term_id
WHERE asphodel_dictionary_unsorted.english REGEXP '[[:<:]]boiler[[:>:]]'
AND asphodel_dictionary_unsorted.english REGEXP '[[:<:]]pump[[:>:]]'
ORDER BY asphodel_dictionary_unsorted.theme_id, asphodel_dictionary_unsorted.english