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

Откуда: Киев
Сообщений: 223
1 вариант:
select u.name, ne.card_Packed 
       from (select L_VS_to_O as L_VS_to_O,sum(case when [D_pack_O] is not null then 1 else 0 end) as card_Packed,
			  sum(case when [D_pack_O] is null then 1 else 0 end) as card_not_packed,
              count(L_VS_to_O) as Card
       from '+ @table_name+ ' t	
       where [L_VS_to_O] is not null
       group by L_VS_to_O) as ne
       LEFT OUTER JOIN [PACKPRJ].[dbo].[Users] u ON U.id=ne.[L_VS_to_O]

2 вариант:
select sum(case when [D_pack_O] is not null then 1 else 0 end) as Packed,
	       sum(case when [D_pack_O] is null then 1 else 0 end) as not_packed,
              count(L_VS_to_O) as All
       from '+ @table_name+ ' t	
              LEFT OUTER JOIN [PACKPRJ].[dbo].[Users] u ON U.id=t.[L_VS_to_O]
       where [L_VS_to_O] is not null
       group by L_VS_to_O
30 июл 09, 20:12    [7481589]     Ответить | Цитировать Сообщить модератору
 Re: Какой запрос будет выполняться быстрее?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
план выполнения смотрите.
но как правило выборки в селетке несколько медленнее джоинов.

для спящего время бодрствования равносильно сну
30 июл 09, 20:15    [7481596]     Ответить | Цитировать Сообщить модератору
 Re: Какой запрос будет выполняться быстрее?  [new]
vino
Member

Откуда:
Сообщений: 1191
New_Frozen, сильно зависит от количества записей в таблицах
Если условие
where [L_VS_to_O] is not null group by L_VS_to_O
сильно сокращает количество записей, а таблица Users "весит" сотни метров или выбирается с удаленного сервера не очень быстро, то первый запрос предпочтительнее
31 июл 09, 12:06    [7483744]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить