Я создаю довольно большой механизм поиска для нашей интрасети нашей компании, у нее есть 1 миллион плюс записи он работает на довольно быстром сервере, и для некоторых поисковых запросов требуется до 1 минуты.
Вот как выглядит таблица:
Я попытался создать для него индекс, но кажется, что я что-то упустил, вот как показывает индекс show
и это сам запрос, это упорядочение, которое замедляет запрос в основном, но даже запрос без сортировки несколько медленный.
SELECT SQL_CALC_FOUND_ROWS *
FROM `businessunit`
INNER JOIN `businessunit-postaddress` ON `businessunit`.`Id` = `businessunit-postaddress`.`BusinessUnit`
WHERE `businessunit`.`Name` LIKE 'tanto%'
ORDER BY `businessunit`.`Premium` DESC ,
CASE WHEN `businessunit`.`Name` = 'tanto'
THEN 0
WHEN `businessunit`.`Name` LIKE 'tanto %'
THEN 1
WHEN `businessunit`.`Name` LIKE 'tanto%'
THEN 2
ELSE 3
END , `businessunit`.`Name`
LIMIT 0 , 30
любая помощь очень ценится
Edit:
Что задерживает этот запрос 99% упорядочивает по релевантности с wildcharacter %
Когда я делаю объяснение, он говорит, используя где; используя fsort