powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизатор 2019
13 сообщений из 13, страница 1 из 1
Оптимизатор 2019
    #40077254
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осваиваюсь с новой версией MS SQL 2019 , периодически удивляет оптимизатор
Дают простой запрос
select top 10 * from dbo.msg_buffer where MsgCounter>2560000000
order by MsgCounter asc
Он думает 4 минуты, и выдавая план 100% Clustered index scan

Причем индекс там очевидный, что сканировать там неясно. Ну да есть конечно order by , но что получается архисложно первых записей по условию отобрать из индекса?
Вопрос - можно ли это как то ускорить?

ALTER TABLE [dbo].[msg_buffer] ADD CONSTRAINT [PK_msg_buffer] PRIMARY KEY CLUSTERED
(
[MsgCounter] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF)
GO
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077257
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
Осваиваюсь с новой версией MS SQL 2019 , периодически удивляет оптимизатор
Дают простой запрос
select top 10 * from dbo.msg_buffer where MsgCounter>2560000000
order by MsgCounter asc
Он думает 4 минуты, и выдавая план 100% Clustered index scan

Причем индекс там очевидный, что сканировать там неясно. Ну да есть конечно order by , но что получается архисложно первых записей по условию отобрать из индекса?
Вопрос - можно ли это как то ускорить?

ALTER TABLE [dbo].[msg_buffer] ADD CONSTRAINT [PK_msg_buffer] PRIMARY KEY CLUSTERED
(
[MsgCounter] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF)
GO


А таблица случаем не секционирована?
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077265
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

А таблица случаем не секционирована?
,
Секционирована, но этот индекс содержит основное поле MsgCounter по которому идет секционирование - поэтому скана по всем секциям быть не должно
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077266
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,

тип MsgCounter какой?
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077268
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
Секционирована

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077269
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
selis76
Секционирована

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design


Т.е. наш любимый сиквел сервер не умеет распараллеливать запросы к секциям??? Чё, правда что ли? А зачем они тогда нужны?
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077270
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кесарь
msLex
пропущено...

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design


Т.е. наш любимый сиквел сервер не умеет распараллеливать запросы к секциям??? Чё, правда что ли? А зачем они тогда нужны?

Очень странный и неверный вывод.
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077273
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору может помочь between начало_секции and конец_секции. Скорее всего MsgCounter имеет тип bigint.
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077274
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Автору может помочь between начало_секции and конец_секции. Скорее всего MsgCounter имеет тип bigint.


Блин, дикость какая-то. Я не ваше решение имею в виду, а поведение сиквел сервера.
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077304
Mr. X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
selis76,

А что с полной версией сервера?
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077436
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr. X
selis76,

А что с полной версией сервера?

15.0.2000.5
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077437
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кесарь
msLex
пропущено...

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design


Т.е. наш любимый сиквел сервер не умеет распараллеливать запросы к секциям??? Чё, правда что ли? А зачем они тогда нужны?


Ну с распаралеливанием там есть нюанс в 2019 это во всех редакциях доступно, а до этого было не во всех
https://docs.microsoft.com/ru-ru/sql/sql-server/editions-and-components-of-sql-server-version-15?view=sql-server-ver15
Но на самом деле параллельных запросов по секциям стоит избегать поскольку они будут утыкаться в дисковую подсистему да и поле секционирования в условия включают не просто так а чтобы запрос шел по конкретным сециям
...
Рейтинг: 0 / 0
Оптимизатор 2019
    #40077443
Mr. X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
selis76,

Самое время обновить до 15.0.4138.2
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизатор 2019
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]