Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 условие в JOIN и WHERE  [new]
relief
Member

Откуда:
Сообщений: 1197
Есть 2 таких запроса

select count(*) from Cities as ct
  join Countries as cty
  on ct.CountryId = cty.CountryId
  where cty.CountryId > 100
  
  
select count(*) from Cities as ct
  join Countries as cty
  on ct.CountryId = cty.CountryId and cty.CountryId > 100


почему у них одинаковый план запроса?
я почему то думал, что: 1. в первом случае сначала сработает джойн, а потом уже по сопоставленным строкам сработает вхере.
2. во втором случае сразу будет всё отфильтровано

поясните почему запросы одинаковы?
и как же тогда лучше делать фильтрацию когда есть джойн из 2 и более таблиц?
1 окт 12, 16:56    [13251118]     Ответить | Цитировать Сообщить модератору
 Re: условие в JOIN и WHERE  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Читайте
1 окт 12, 17:02    [13251169]     Ответить | Цитировать Сообщить модератору
 Re: условие в JOIN и WHERE  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
relief,

ответ прост - сервер себе на уме. Делает так, как считает выгоднее делать.
При этом у него в запасе много разных приёмов - и предикаты из WHERE в JOIN переносит,
и порядок JOINов меняет, и операторы заменяет эквивалентами
1 окт 12, 17:20    [13251316]     Ответить | Цитировать Сообщить модератору
 Re: условие в JOIN и WHERE  [new]
relief
Member

Откуда:
Сообщений: 1197
iap
relief,

ответ прост - сервер себе на уме. Делает так, как считает выгоднее делать.
При этом у него в запасе много разных приёмов - и предикаты из WHERE в JOIN переносит,
и порядок JOINов меняет, и операторы заменяет эквивалентами


кхм. тогда при правильный ответ на собседовании будет "зависит от сервера" :)
1 окт 12, 17:27    [13251397]     Ответить | Цитировать Сообщить модератору
 Re: условие в JOIN и WHERE  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
кхм. тогда при правильный ответ на собседовании будет "зависит от сервера" :)

Правильно - читать хелпы

By using joins, you can retrieve data from two or more tables based on logical relationships between the tables. Joins indicate how Microsoft SQL Server should use data from one table to select the rows in another table.

A join condition defines the way two tables are related in a query by:

Specifying the column from each table to be used for the join. A typical join condition specifies a foreign key from one table and its associated key in the other table.

Specifying a logical operator (for example, = or <>,) to be used in comparing values from the columns.

Inner joins can be specified in either the FROM or WHERE clauses. Outer joins can be specified in the FROM clause only. The join conditions combine with the WHERE and HAVING search conditions to control the rows that are selected from the base tables referenced in the FROM clause.
1 окт 12, 17:35    [13251484]     Ответить | Цитировать Сообщить модератору
 Re: условие в JOIN и WHERE  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
relief
iap
relief,

ответ прост - сервер себе на уме. Делает так, как считает выгоднее делать.
При этом у него в запасе много разных приёмов - и предикаты из WHERE в JOIN переносит,
и порядок JOINов меняет, и операторы заменяет эквивалентами


кхм. тогда при правильный ответ на собседовании будет "зависит от сервера" :)
главное, на собеседовании, не называйте where как "в-хере" :)
1 окт 12, 19:30    [13252168]     Ответить | Цитировать Сообщить модератору
 Re: условие в JOIN и WHERE  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
relief
iap
relief,

ответ прост - сервер себе на уме. Делает так, как считает выгоднее делать.
При этом у него в запасе много разных приёмов - и предикаты из WHERE в JOIN переносит,
и порядок JOINов меняет, и операторы заменяет эквивалентами


кхм. тогда при правильный ответ на собседовании будет "зависит от сервера" :)
А что, не так?
Вы не можете диктовать серверу как выполнять задание.
Вы можете его только попросить что-то сделать.
1 окт 12, 21:46    [13252574]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить