SQL объединяет условие и условие где

У меня проблема с условиями where и внутренними условиями соединения.

Они есть:

ex:

select * from table1 T

inner join table2 F on F.tkey=T.tkey and F.date >= '20140104'

и

select * from table1 T

inner join table2 F on F.tkey=T.tkey

where F.date >= '20140104'

** здесь, что будет выполняться быстрее и почему?


person Kanishka Ariyarathne    schedule 13.08.2014    source источник
comment
Посмотрите план выполнения, чтобы убедиться в этом сами   -  person juergen d    schedule 13.08.2014
comment
в чем именно проблема?: Они компилируются или нет? Или вы просто спрашиваете, какой из них будет выполняться быстрее?   -  person SEB BINFIELD    schedule 13.08.2014
comment
просто спрашивая, какой из них будет выполняться быстрее   -  person Kanishka Ariyarathne    schedule 02.11.2020


Ответы (1)


Последовательность выполнения любого SQL-запроса:

FROM -> ON -> JOIN -> WHERE -> GROUP BY -> WITH CUBE или WITH ROLLUP-> HAVING-> SELECT-> DISTINCT-> ORDER BY -> TOP

поэтому первый будет выполняться быстрее, потому что он будет фильтровать строки на основе заданных критериев при объединении, где, поскольку второй запрос сначала присоединится к таблицам, а затем перейдет к фильтрации строк

person ankit    schedule 13.08.2014
comment
Это не обязательно так - в зависимости от того, какой SQL Parser он использует и как анализатор анализирует инструкцию, он может давать разные результаты. Во многих случаях приведенный выше запрос достаточно прост, чтобы можно было выбрать один и тот же план выполнения для обоих запросов. - person DanK; 13.08.2014