Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 план запроса с оконными функциями не понятен  [new]
мимо
Guest
Сервер
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4033.0 (X64)   

Код
go
if OBJECT_ID('tempdb..#t1') is not null drop table #t1;
create table #t1 (zid int);

insert into #t1 (zid)
select top 100000 t.number
from master..spt_values, master..spt_values as t;
go
SET SHOWPLAN_XML On
go
 
 
select top 10 *
	,SUM(zid) over()
from #t1;


--select top 10 *
--,(select sum(zid) from #t1)
--from #t1;

go
SET SHOWPLAN_XML Off
go 
if OBJECT_ID('tempdb..#t1') is not null drop table #t1;

Вопрос: эти, почти 8000 процентов - косяк или как-то можно интерпретировать? В других версиях так же?
24 фев 15, 15:38    [17305820]     Ответить | Цитировать Сообщить модератору
 Re: план запроса с оконными функциями не понятен  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
- приборы ?
-300
-а шо 300?
-а шо приборы ?
24 фев 15, 15:42    [17305844]     Ответить | Цитировать Сообщить модератору
 Re: план запроса с оконными функциями не понятен  [new]
мимо
Guest
Maxx, если код выполнить, то показан план и там цена операций в процентах. Но что-то проценты, на мой взгляд, неадекватные.
24 фев 15, 15:48    [17305896]     Ответить | Цитировать Сообщить модератору
 Re: план запроса с оконными функциями не понятен  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
мимо,

а ето типа один батч 2% другой 30 % ? Если ето - то честно еще с версии 2000 на них внимания не обращаю, бо имхо сие -попугаи.
24 фев 15, 15:58    [17305957]     Ответить | Цитировать Сообщить модератору
 Re: план запроса с оконными функциями не понятен  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
мимо,

Проценты расставляет SSMS. Они основываются на Estimated Subtree Cost, оценочная стоимость поддерева. Обычно она возрастает куммулятивно, но в планах с Top, сервер осознает, что ему не нужно будет реально читать все 100000 строк, чтобы получить первые 10 результатов и устанавливает число строк сообразно top, но не во всех операторах (это by design, на точность планов не влияет).
SSMS этого не учитывает и показывает ошибочно.
Plan Explorer это знает и показывает правильно:
[img=http://www.somewheresomehow.ru/wp-content/uploads/2015/02/Безымянный.png]
Не обращайте внимания. Периодически бывает в куче других планов, где так или иначе задействован механизм row goal, как в случае с top.
24 фев 15, 16:09    [17306022]     Ответить | Цитировать Сообщить модератору
 Re: план запроса с оконными функциями не понятен  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
SomewhereSomehow,
Какая-то хрень с картинкой в предыдущем посте.
Вот - SQL Sentry Plan Explorer - проценты бьются.
Картинка с другого сайта.
Правда, все равно выглядит глупо, как будто в Spool приходят 10 строк - а на выходе 100 000 - это издержки процесса оценки.
24 фев 15, 16:17    [17306064]     Ответить | Цитировать Сообщить модератору
 Re: план запроса с оконными функциями не понятен  [new]
мимо
Guest
SomewhereSomehow, спасибо.
24 фев 15, 16:17    [17306069]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить