Может кто-нибудь мне помочь в оптимизации этого запроса:Как бы вы оптимизировали этот запрос mysql?
SELECT DISTINCT
A.X1,
A.X2
FROM TABLEAA A
JOIN TABLEBB B ON A.Y = B.Y AND B.Z1='SELECTED1' AND B.W NOT LIKE 'SLECTED3'
JOIN TABLECC C ON A.Y = C.Y AND C.Z2='SELECTED2'
AND A.W NOT LIKE 'SLECTED3'
В то время как
TABLEAA: 1 миллион записей TABLEBB: 17 миллионов записей TABLECC: 1,2 миллиона записей
Это работает, но это занимает почти От 8 до 10 секунд.
Есть ли другой способ написать это?
изменить: первичный индекс на TableBB представляет собой комбинацию B.Z1 и B.Y. первичный индекс на TableCC представляет собой комбинацию C.Z2 и C.Y. первичный индекс в таблицеAA равен A.Y
Выполнение 'explain' в запросе покажет вам отсутствующие индексы. – jordanm
Каковы индексы на таблицах? – Kickstart
'B.Z1 = 'SELECTED1'',' НЕ НРАВИТСЯ' SLECTED3'' - Я не знаю, что вы делаете, но это пахнет плохим дизайном схемы. –