Имя: Пароль:
1C
 
Обновление статистики не меняет план запроса.
,
0 H A D G E H O G s
 
20.10.19
15:55
Дня доброго.
Никогда такого не было и вот опять...

Есть план запроса, который не попадает в статистику:
http://prntscr.com/plsvvx

Ну понятно, SQL ждал 3700 строк, выделил под них память, пришло 20000 строк, памяти не хватило, стал писать в tempdb

Сделал updatestatistics по этой таблице, DBCC FREEPROCCACHE

Повторный запрос выдал тот же план выполнения.

Что я забыл?
1 Fragster
 
гуру
20.10.19
15:57
Неудачное значение для статистики
2 Fragster
 
гуру
20.10.19
15:57
Не в тот столбец гистограмммы вошло
3 H A D G E H O G s
 
20.10.19
16:25
В статистике - пусто
http://prntscr.com/plt4xx

Грешу на 183 млн. строк, судя по манам,
http://sql-ex.ru/blogs/optimization/statistics-in-sql-server.html
для от ста млн. строк для сбора статистики на больших таблицах нужны какие-то заморочки.

Ну и данные надо проверять, судя по всему в таблицу струячатся дубли.
4 H A D G E H O G s
 
20.10.19
16:27
Ну и собственно, если разбить 183 млн на 200 частей - это не сильно поможет.
Не знал, что гистограмма ограничена 200 строками, че так мало?
5 Fragster
 
гуру
21.10.19
21:04
Партиционируй
6 МихаилМ
 
22.10.19
00:23
(0)
попробуйте трюк с фильтруемыми индексами.
7 rphosts
 
22.10.19
03:56
интересная тема... сделаю закладочку.
8 rphosts
 
22.10.19
04:09
отфильтрованная статистика (Create Statistic с предикатом Where) не подходит для вашего случая?
9 Перцовый баллон
 
22.10.19
08:56
(3) Скажи спасибо 1с-овцам которые пихают splitter первым полем во все таблицы. Значения гистограммы хранятся для 1-го поля, а оно у тебя, как и у большинства, состоит из 1 значения. Статистике превед.
10 Перцовый баллон
 
22.10.19
09:03
+(9) статистика считается на основании гистограммы первого поля и данных о плотности по комбинации с другими полями. Соответственно норм люди первым полем делают высокоселективные данные, а не поле из значения разделителя, ЛОЛ.
11 Перцовый баллон
 
22.10.19
09:05
После темы с индексами на партнерке понятно что для них производительность на десятом месте и относится к базе как к помойке это норма.
12 Перцовый баллон
 
22.10.19
09:58
(3) ради эксперимента попробуй выключить разделение в базе на копии, как это отразится на статистике?
13 ДенисЧ
 
22.10.19
10:10
(11) В 9.* они на NoSQL перейдут - вот тогда точно помойка будет ))
2 + 2 = 3.9999999999999999999999999999999...