|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
Осваиваюсь с новой версией 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 16:39 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
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 А таблица случаем не секционирована? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 16:48 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
msLex А таблица случаем не секционирована? Секционирована, но этот индекс содержит основное поле MsgCounter по которому идет секционирование - поэтому скана по всем секциям быть не должно ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:29 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
selis76, тип MsgCounter какой? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:38 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
selis76 Секционирована Проблем в этом. top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану. by design ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:39 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
msLex selis76 Секционирована Проблем в этом. top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану. by design Т.е. наш любимый сиквел сервер не умеет распараллеливать запросы к секциям??? Чё, правда что ли? А зачем они тогда нужны? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:43 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
Кесарь msLex пропущено... Проблем в этом. top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану. by design Т.е. наш любимый сиквел сервер не умеет распараллеливать запросы к секциям??? Чё, правда что ли? А зачем они тогда нужны? Очень странный и неверный вывод. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:43 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
Автору может помочь between начало_секции and конец_секции. Скорее всего MsgCounter имеет тип bigint. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:48 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
Владислав Колосов Автору может помочь between начало_секции and конец_секции. Скорее всего MsgCounter имеет тип bigint. Блин, дикость какая-то. Я не ваше решение имею в виду, а поведение сиквел сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 17:52 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
selis76, А что с полной версией сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 22:55 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
Mr. X selis76, А что с полной версией сервера? 15.0.2000.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 22:34 |
|
Оптимизатор 2019
|
|||
---|---|---|---|
#18+
Кесарь 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 Но на самом деле параллельных запросов по секциям стоит избегать поскольку они будут утыкаться в дисковую подсистему да и поле секционирования в условия включают не просто так а чтобы запрос шел по конкретным сециям ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 22:39 |
|
|
start [/forum/topic.php?fid=46&fpage=22&tid=1684602]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 126ms |
0 / 0 |