SQL - лучше сделать здесь подзапрос или расширенное предложение WHERE? - PullRequest
1 голос
/ 25 июля 2010

Приведенная ниже таблица CUST будет объединена с ~ 10 таблицами.

В частности, для этого подзапроса лучше просто объединиться непосредственно с таблицей Customer и переместить 4-часть предложения WHERE подзапроса вПредложение WHERE основного запроса?

Мне в первую очередь интересно, можно ли сократить объем обработки, который должен выполнять SQL Server, если мы локализуем части основного предложения WHERE, создавая подзапросы, как показано ниже.

select * From 
(select CKey, CID, CName from MainDB.dbo.Customer 
     where 
        LOC = 'ARK' 
        and Status = 1 
        and CID not like 'KAN%' 
        and CID not like 'MIS%') as CUST

Ответы [ 3 ]

5 голосов
/ 25 июля 2010

В более старых версиях, да, я видел огромные улучшения, используя производные таблицы (не подзапрос), а не все в одном JOIN / WHERE. Это менее актуально сейчас, так как SQL Server 2005

Однако, почему бы не попробовать оба и посмотреть, что произойдет?

3 голосов
/ 25 июля 2010

Исходя из того, что вы предоставили, подзапрос не нужен.Без ~ 10 соединений с производной таблицей CUST крайне сложно сказать, что следует или не следует делать.

0 голосов
/ 25 июля 2010

Я полагаю, что если вы объединяете столько таблиц, было бы лучше создать представление.

...