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

Откуда: Москва
Сообщений: 4804
Господа, откуда в плане запроса может возникнуть такая ахинея?

Это предварительный план, окончательный вывести не удается и запрос-то не такой уж сложный

       UPDATE s
             SET id_TargetKey = ISNULL(w_target.id_TargetKey, 0) 
       FROM dbo.ReturnGoods s WITH (INDEX = [IX_Return_Goods_pk_date])
       LEFT JOIN Finance_Olap.Stage.vw_Orders_Erp  oe ON s.order_id = oe.order_id AND oe.chrt_id = s.chrt_id -- [v1.0]
       LEFT JOIN OLAP.[dbo].[DimWEBTarget] w_target ON w_target.TargetKey = oe.target_point
       WHERE 
             s.pk_date IN (SELECT pk_date FROM @C1) AND 
             s.id_TargetKey <> ISNULL(w_target.id_TargetKey, 0) OR s.id_TargetKey IS NULL;


К сообщению приложен файл. Размер - 62Kb
26 янв 16, 13:18    [18730053]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Господа, откуда в плане запроса может возникнуть такая ахинея?

А что тут ахинейского ?
26 янв 16, 13:21    [18730076]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
a_voronin
Member

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

Я раньше считал, что проценты попадают в диапазон от 0 до 100, но сейчас видимо военное время и поэтому синус достигает 4, а проценты уровня нескольких миллионов.
26 янв 16, 13:24    [18730094]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
Mairos
Member

Откуда:
Сообщений: 555
a_voronin, первый раз ТАКОЕ вижу. Я о процентах. Может глюк какой-то?
26 янв 16, 13:27    [18730116]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Я раньше считал, что проценты попадают в диапазон от 0 до 100, но сейчас видимо военное время и поэтому синус достигает 4, а проценты уровня нескольких миллионов.

А как можно вывести адекватные проценты, не имея, напрмер, адекватной входной информации ?
26 янв 16, 13:28    [18730125]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Glory
a_voronin
Я раньше считал, что проценты попадают в диапазон от 0 до 100, но сейчас видимо военное время и поэтому синус достигает 4, а проценты уровня нескольких миллионов.

А как можно вывести адекватные проценты, не имея, напрмер, адекватной входной информации ?


А какая тут нужна входная информация и кому? Что оптимизатору планов тут не хватило? Окончательный план я тоже не могу получить -- запрос зависает с концами.
26 янв 16, 13:30    [18730141]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Окончательный план я тоже не могу получить -- запрос зависает с концами.

Ну так если завис, то может проценты то правильные ?
Иначе бы давно уже все выполнилось наверное.

a_voronin
А какая тут нужна входная информация и кому? Что оптимизатору планов тут не хватило?

У вас предстваления в каких то других базах, к которым непонятно какие выданы права.
26 янв 16, 13:37    [18730188]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
SomewhereSomehow
Member

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

Относительно известное поведение, и тут уже обсуждалось: план запроса с оконными функциями не понятен

Вот ответы МС:
https://connect.microsoft.com/SQLServer/feedback/details/267530/ssms-execution-plan-sometimes-exceeds-100
https://connect.microsoft.com/SQLServer/feedback/details/621330/sum-of-operator-costs-is-more-than-100-in-the-execution-plans
https://connect.microsoft.com/SQLServer/feedback/details/436184/huge-operator-cost-in-estimated-execution-plan
https://connect.microsoft.com/SQLServer/feedback/details/370798/query-plan-iterator-cost-percentage-way-off
26 янв 16, 13:42    [18730228]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
iap
Member

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

вокруг OR, небось, скобки надо поставить?
26 янв 16, 13:47    [18730265]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
StarikNavy
Member

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

"or" - без скобочек?
26 янв 16, 13:55    [18730319]     Ответить | Цитировать Сообщить модератору
 Re: Дикий план  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
StarikNavy
a_voronin,

"or" - без скобочек?


Да это я лажанулся, но нужны скобки, но как выяснилось проблему это не устраняет. Проценты в плане по прежнему сотни тысяч.
В общем пришлось запрос на два распилить. Только тогда и только в окончательном плане проценты стали в норму.
DECLARE @C TABLE (pk_date INT NOT NULL PRIMARY KEY CLUSTERED);
DECLARE @C1 TABLE (pk_date INT NOT NULL PRIMARY KEY CLUSTERED);
DECLARE @TK TABLE (order_id INT NOT NULL, chrt_id INT NOT NULL, id_TargetKey INT NOT NULL);


INSERT INTO @C
SELECT pk_date 
FROM Dictionary.CalendarDates1
WHERE pk_date < 20110201

INSERT INTO @TK
SELECT oe.order_id, oe.chrt_id, w_target.id_TargetKey
FROM Finance_Olap.Stage.vw_Orders_Erp  oe 
OUTER APPLY 
(
	SELECT TOP 1 w_target.id_TargetKey 
	FROM OLAP.[dbo].[DimWEBTarget] w_target 
	WHERE w_target.TargetKey = oe.target_point
) w_target
WHERE w_target.id_TargetKey IS NOT NULL 


	UPDATE s
		SET id_TargetKey = ISNULL(w_target.id_TargetKey, 0) 
	FROM dbo.ReturnGoods s-- WITH (INDEX = [IX_Return_Goods_pk_date])
	OUTER APPLY 
	(
		SELECT TOP 1 oe.id_TargetKey
		FROM @TK oe
		WHERE s.order_id = oe.order_id AND oe.chrt_id = s.chrt_id -- [v1.0]
	) w_target
	WHERE 
		s.pk_date IN (SELECT pk_date FROM @C1) AND 
		(s.id_TargetKey <> ISNULL(w_target.id_TargetKey, 0) OR s.id_TargetKey IS NULL);
26 янв 16, 14:25    [18730568]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить