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

Откуда:
Сообщений: 91
Ув знатоки, подскажите почему по разному строится план запросов и соответственно время выполнения у этих двух вариантов

Быстрый вариант
declare @Dt datetime
select @Dt='20111101 00:00:00.000'
SELECT * FROM Sbyt..tPotr ptr1,
(SELECT IdPotr,IdUsl,Min(DTUserN) As DTRecord FROM Sbyt..tNatP
GROUP BY IdPotr,IdUsl HAVING Min(DTUserN)>= @Dt) fltr
WHERE ptr1.IdPotr=fltr.IdPotr

Медленный вариант
SELECT * FROM Sbyt..tPotr ptr1,
(SELECT IdPotr,IdUsl,Min(DTUserN) As DTRecord FROM Sbyt..tNatP
GROUP BY IdPotr,IdUsl HAVING Min(DTUserN)>= '20111101 00:00:00.000') fltr
WHERE ptr1.IdPotr=fltr.IdPotr

Просто мне необходимо было сделать одной командой, а наткнулся на увеличение времени выполнения на порядок!!!
26 дек 11, 14:07    [11826509]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
libru
Member

Откуда:
Сообщений: 877
https://www.sql.ru/articles/mssql/2005/070704TechniqueForEnsuringPlanStabilityInSQLServer2000.shtml
?
26 дек 11, 14:16    [11826593]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
zsv
Member

Откуда:
Сообщений: 91
спасибо за ссылку, буду иметь ввиду эту ситуацию, но там речь идет о процедурах, мне кажется, что мой случай несколько другое...
26 дек 11, 14:56    [11827000]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
любитель одинаковых запросов
Guest
zsv,
планы покажите
26 дек 11, 15:16    [11827193]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
zsv
Member

Откуда:
Сообщений: 91
план быстрого запроса

К сообщению приложен файл (highspeed.sqlplan - 32Kb) cкачать
26 дек 11, 15:24    [11827265]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
zsv
Member

Откуда:
Сообщений: 91
план медленного запроса

К сообщению приложен файл (lowspeed.sqlplan - 33Kb) cкачать
26 дек 11, 15:25    [11827271]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
любитель одинаковых запросов
Guest
zsv,
update statistics dbo.tPotr with fullscan
update statistics dbo.tNatP with fullscan
поможет?
26 дек 11, 16:15    [11827709]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
zsv
Member

Откуда:
Сообщений: 91
Помогло. план поменялся и выборки побежали гораздо быстрее и одинаково, что первый, что второй вариант.
Но мне теперь непонятно, в свойствах базы у меня стояли AUTOUPDATESTATISTICS и AUTOCREATESTATISTICS и все это должно было делаться автоматом... Или есть еще какие-то тонкости в этом вопросе?
26 дек 11, 16:56    [11828094]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
AUTO UPDATE STATISTICS
Guest
zsv
Помогло. план поменялся и выборки побежали гораздо быстрее и одинаково, что первый, что второй вариант.
Но мне теперь непонятно, в свойствах базы у меня стояли AUTOUPDATESTATISTICS и AUTOCREATESTATISTICS и все это должно было делаться автоматом... Или есть еще какие-то тонкости в этом вопросе?


1. AUTO UPDATE STATISTICS выполняется после изменения определенного процента числа записей в таблице (где-то всплывала цифра 20%)
2. AUTO UPDATE STATISTICS выполняется на семпле < 100% и если распределение значений в поле, по которому строиться статистика, неравномерно-рваное, то статистика может получается некорректной.


Выхода два:
либо "зажимать" планы выполнения запросов хинтами, либо отключать авто обновление статистки и выносить его в регулярные регламентные работы.
26 дек 11, 17:07    [11828228]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
zsv
Member

Откуда:
Сообщений: 91
а что имеется ввиду под "зажимать планы выполнения запросов хинтами" по отношению к обновлению статистики?
26 дек 11, 17:37    [11828572]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
AUTO UPDATE STATISTICS
Guest
zsv
а что имеется ввиду под "зажимать планы выполнения запросов хинтами" по отношению к обновлению статистики?


в данном случае option (hash join), скорее всего, исправил бы ситуацию.
26 дек 11, 17:46    [11828647]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
covert
Guest
Кстати, в SQL Server неявное приведение типов влияет на производительность?
26 дек 11, 20:51    [11829630]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
covert
Кстати, в SQL Server неявное приведение типов влияет на производительность?
А вы как думаете? Если оно влияет на план выполнения, то от этого на производительность будет влиять?
27 дек 11, 06:44    [11830555]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения почти одинаковых запросов  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
AUTO UPDATE STATISTICS
2. AUTO UPDATE STATISTICS выполняется на семпле < 100% и если распределение значений в поле, по которому строиться статистика, неравномерно-рваное, то статистика может получается некорректной.


Если распределение значений кривое, то даже при UPDATE WITH FULLSCAN статистика тоже может получится весьма кривой.
27 дек 11, 15:36    [11833764]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить