У меня есть 3 столбца данных, которые я ищу: описание (полный текст), lat (index) и lon (index).MySQL полный текстовый индекс и регулярный поиск индекса
Когда я делаю SELECT id FROM table MATCH(description) AGAINST ('query' IN BOOLEAN MODE)
, все происходит быстро и отлично работает.
Когда я делаю SELECT id FROM table WHERE lat BETWEEN a and b AND lon BETWEEN x and y
, все происходит быстро и отлично работает.
Когда я объединять два предложения, а также простые И и делать SELECT id FROM table MATCH(description) AGAINST ('query' IN BOOLEAN MODE) AND (lat BETWEEN a and b AND lon BETWEEN x and y)
, все работает нормально, но для обработки требуется несколько секунд.
Первые два запроса будут занимать 0,1 секунды, а последний займет 3+ секунды, и я не могу понять, как заставить его работать быстрее. Описание представляет собой полнотекстовые индексы, а столбцы lat/lon являются нормальными индексами.
Любые идеи о том, что замедляет работу и/или как ее исправить? Стол - InnoDB.
Это любопытно. Пожалуйста, предоставьте 'EXPLAIN SELECT ...' для медленного запроса. –
, но он будет использовать только один из двух индексов для запроса. –
select_type = SIMPLE, type = fulltext, possible_keys =, key = search_fulltext, extra = Использование где; Использование filesort –
user2247281