Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разные планы запросов  [new]
фухфух
Guest
Приветствую всех
Подскажите пож-та, в чем может быть причина следующего поведения
Есть запрос
select objq.object_id, art.articleDate        
from ft_objectQuotation as objq       
inner join data_articles as art          
on art.article_id = objq.article_id         
and art.articleDate between '2012-06-18 00:00:00.000' and '2012-06-25 10:34:54.753'
and objq.VersionNo = (
select max(VersionNo)
from ft_objectQuotation                                
where article_id = objq.article_id
and object_id = objq.object_id)


В результате "получается" один план запроса.
Стоит поменять значение '2012-06-18 00:00:00.000', к примеру, на '2012-06-22 00:00:00.000' - получается уже другой, более эффективный план запроса.
Статистика обновлена.
Таблицы большие, в одной около 192 млн. записей, в другой - около 20 млн.

Картинка с планом прилагается.
Картинка с другого сайта.
25 июн 12, 15:58    [12771603]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
фухфух
Подскажите пож-та, в чем может быть причина следующего поведения

Меняется число записей, попадающих под фильтр art.articleDate between - меняется стратегия соединения.
25 июн 12, 16:31    [12771882]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
фухфух,

какой план лучше? второй?
25 июн 12, 16:38    [12771935]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
dmitry stakanov
какой план лучше? второй?

А критерий "лучшести" какой ?
Малое время выполнения ? Меньшее использование памяти ? меньшее число чтений ?
25 июн 12, 16:50    [12772005]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
dmitry stakanov
фухфух,

какой план лучше? второй?

так это же разные запросы. Чего их сравнивать то.
25 июн 12, 16:51    [12772015]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

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

это субъетивной критерий для каждой задачи / комплекса задач. поэтому в вопросе было слово "лучше".
25 июн 12, 16:55    [12772058]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
Мистер Хенки,

почему разные?
25 июн 12, 16:55    [12772066]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
dmitry stakanov
это субъетивной критерий для каждой задачи / комплекса задач. поэтому в вопросе было слово "лучше".

Ну так выберите его для своей конкретной задачи и сравните
25 июн 12, 16:57    [12772076]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

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

вот это я и пытаюсь выяснить.
если второй план выигрывает по времени, то вполне возможно, что на битовой фильтрации есть потеря селективности фильтра по битовой карте.
25 июн 12, 17:04    [12772121]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
dmitry stakanov
Мистер Хенки,

почему разные?

так диапазоны времени автор разные указывает. Может в первом случае попадает сто пицот миллионов записей, а во втором пару десятков.
25 июн 12, 17:06    [12772133]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
dmitry stakanov
если второй план выигрывает по времени, то вполне возможно, что на битовой фильтрации есть потеря селективности фильтра по битовой карте.

Мда.
Ничего, что там 2 разные стратегии соединения ?
Вот вы 2 и 2 для получения 4 складываете или умножаете ?
25 июн 12, 17:08    [12772155]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
Glory
dmitry stakanov
если второй план выигрывает по времени, то вполне возможно, что на битовой фильтрации есть потеря селективности фильтра по битовой карте.

Мда.
Ничего, что там 2 разные стратегии соединения ?
Вот вы 2 и 2 для получения 4 складываете или умножаете ?


нет, не умножаю. hash как раз следствие bitmap.

2фухфух можно увидеть план с подсказкой loop?
25 июн 12, 17:11    [12772178]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
dmitry stakanov
нет, не умножаю. hash как раз следствие bitmap.

Выбор стратегии соединения - это не следствие bitmap.
25 июн 12, 17:13    [12772186]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

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

вы правы, наоборот.
25 июн 12, 17:19    [12772231]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
фухфух
Guest
Извиняюсь, что вчера не смог отвечать.

Хотел бы понять с самого начала. Не совсем понимаю, почему в первом варианте оптимизатор "выбирает" операцию Index Scan (OBJECT: IX_Data_Articles_Processed_ArticleID), а во-втором варианте - Index Seek (OBJECT: CIX_Data_Articles)
Столбцы индекса IX_Data_Articles_Processed_ArticleID
Processed
Article_ID

Индекс CIX_Data_Articles
Article_ID
ArticleDate
26 июн 12, 08:58    [12774376]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
фухфух,

поставьте хинт loop в соединение и покажите план.

как я понимаю в Вашем случае критично время выполенния запроса?
26 июн 12, 09:37    [12774516]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
фухфух
Guest
Поставил. Получается полный шлак, время выполнения зашкаливает настолько, что даже план приводить не буду. Вообще, я не один раз замечал и тестировал, что оптимизатор практически всегда точно выбирает оптимальный тип соединения.
26 июн 12, 10:03    [12774638]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
фухфух,

какие индексы используются при подстановке хинта?

пс значит bitmap здесь не виноват. я думал дело в нем.
26 июн 12, 10:10    [12774697]     Ответить | Цитировать Сообщить модератору
 Re: Разные планы запросов  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
фухфух
Поставил. Получается полный шлак, время выполнения зашкаливает настолько, что даже план приводить не буду. Вообще, я не один раз замечал и тестировал, что оптимизатор практически всегда точно выбирает оптимальный тип соединения.

В случае 2 таблиц и актуальной статистики - да. Если таблиц мнОго, тогда нет.
26 июн 12, 10:20    [12774772]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить