Talker
Новичок
Подскажите, каким должен быть индекс
Есть табличка с информацией о людях (>300k записей). В том числе в таблице 4 поля для имени и 4 поля для фамилии (такая специфическая область, может быть у человека 4 разных имени или фамилии). Жутко тормозит поиск по имени и фамилии.
Пример запроса ("найти всех, у кого фамилия начинается на МАКСИМ и имя начинается на ПЕТР")
SELECT *
FROM person
WHERE (
famil LIKE 'максим%'
OR famil_2 LIKE 'максим%'
OR famil_3 LIKE 'максим%'
OR famil_4 LIKE 'максим%'
)
AND (
name LIKE 'петр%'
OR name_2 LIKE 'петр%'
OR name_3 LIKE 'петр%'
OR name_4 LIKE 'петр%'
)
По-разному извращался с индексами, всё равно получается тормоз. Подскажите, как по-хорошему должен выглядеть индекс для этой задачи?
Есть табличка с информацией о людях (>300k записей). В том числе в таблице 4 поля для имени и 4 поля для фамилии (такая специфическая область, может быть у человека 4 разных имени или фамилии). Жутко тормозит поиск по имени и фамилии.
Пример запроса ("найти всех, у кого фамилия начинается на МАКСИМ и имя начинается на ПЕТР")
SELECT *
FROM person
WHERE (
famil LIKE 'максим%'
OR famil_2 LIKE 'максим%'
OR famil_3 LIKE 'максим%'
OR famil_4 LIKE 'максим%'
)
AND (
name LIKE 'петр%'
OR name_2 LIKE 'петр%'
OR name_3 LIKE 'петр%'
OR name_4 LIKE 'петр%'
)
По-разному извращался с индексами, всё равно получается тормоз. Подскажите, как по-хорошему должен выглядеть индекс для этой задачи?