SQL: присоединиться после предложения Where - PullRequest
0 голосов
/ 13 января 2019

У меня большой оператор SQL.

Но я хочу проверить предложение where в первой таблице (T1), а после этого сделать все объединения строк, выбранных с помощью предложения where.

Поскольку запрос на самом деле очень медленный, MySQL объединяет все таблицы в t1 и затем проверяет предложение where!

SELECT * from FIRSTTABLE T1
        LEFT JOIN T2 on (....)
        LEFT JOIN T3 on (....)
WHERE T1.column = '1' OR T1.column= '5'

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вы можете сделать что-то вроде:

SELECT * from 
(
SELECT * from FIRSTTABLE T1
WHERE T1.column = '1' OR T1.column= '5'
) as T2 

LEFT JOIN T3 on (....)
LEFT JOIN T4 on (....)
0 голосов
/ 13 января 2019

Это слишком долго для комментария.

SQL-запросы скомпилированы и оптимизированы перед выполнением. Порядок предложений в запросе на самом деле не имеет ничего общего с окончательным планом выполнения. Более конкретно, условия фильтрации в предложении WHERE могут иметь место до, после или даже во время обработки JOIN.

Вы можете начать изучать оптимизацию SQL, разбираясь в индексах. Документация по MySQL - очень разумное место для начала.

...