Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Не то чтобы вопрос жизни и смерти, но концепция что SARGable, а что нет прям у меня на глазах рушится. Наверно давно планы не отлаживал или какой твиттер упустил. Предикаты распарились в DATEPART и индекс был успешно заюзан. Для доп. анализа вот еще Код: sql 1. 2. (54429 rows affected) Table 'RETURNED_ITEM_2'. Scan count 5, logical reads 169985, physical reads 1514, read-ahead reads 6626, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 1140 ms, elapsed time = 1231 ms. CPU time = 0 ms, elapsed time = 0 ms. (54429 rows affected) Table 'RETURNED_ITEM_2'. Scan count 5, logical reads 11525, physical reads 1, read-ahead reads 11646, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 593 ms, elapsed time = 1248 ms. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 13:53 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Тема индекса не раскрыта. Но, подозреваю, сервер не дурак, чтобы делать range scan по индексу и лукапиться в кластерник за недостающими полями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 13:55 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
GlebanskiYEAR and MONTH оказывается получше, чем прямое сравнение по датам Ну да, 170к разных чтений гораздо лучше, чем 11к. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:00 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Обычный индекс по полю datetime (да, дамп базы из 2005 года) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:08 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Первый план ужасный. Второй план лучше: чтений на порядок меньше, и, возможно, под вашу структуру он и идеален. Хотите seek -- делайте индекс, который вам советует сервер. Хотите seek без изменения структуры -- сделайте forceseek и сравните кол-во чтений со вторым вариантом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:11 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Glebanski, второй запрос будет вообще идеально работать, если построите кластерный по дате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:28 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
GlebanskiНе то чтобы вопрос жизни и смерти, но концепция что SARGable, а что нет прям у меня на глазах рушится. Наверно давно планы не отлаживал или какой твиттер упустил. стопудово пропустили. был такой твиттер про отличие index seek от index scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:30 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
dawGlebanskiНе то чтобы вопрос жизни и смерти, но концепция что SARGable, а что нет прям у меня на глазах рушится. Наверно давно планы не отлаживал или какой твиттер упустил. стопудово пропустили. был такой твиттер про отличие index seek от index scan. и как связан ваш "комментарий" с вопросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:35 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Glebanski, Добавьте к своим запросам option (maxdop 1) и сравните еще раз. Либо сравнивайте CPU time, а не elapsed. К тому же, неплохо бы исключать затраты на передачу данных клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:40 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
invm, Эффекта нет, да и это база на моем лэптопе. Весь вопрос скорее в том, что может кто знает, почему SQL Server пытается через datepart насильно индекс попользовать. Может быть какой программист подумал "а что это у нас клиенты жалуются, что MONTH и YEAR не используют индекс по дате? давай ка выкатим апдейт и покажем им, что мы умеем умно запросы парсить" :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:57 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Glebanskiinvm, Эффекта нет, да и это база на моем лэптопе. Весь вопрос скорее в том, что может кто знает, почему SQL Server пытается через datepart насильно индекс попользовать. Может быть какой программист подумал "а что это у нас клиенты жалуются, что MONTH и YEAR не используют индекс по дате? давай ка выкатим апдейт и покажем им, что мы умеем умно запросы парсить" :D а где тут datepart? MONTH и YEAR детерминистические функции, и их индекс может использовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 15:04 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
GlebanskiЭффекта нетКонечно нет. Это наглядно видно по CPU time в показанном вами результате. Glebanskiда и это база на моем лэптопе.В этом случае нету затрат на передачу данных клиенту? GlebanskiВесь вопрос скорее в том, что может кто знает, почему SQL Server пытается через datepart насильно индекс попользовать.Посмотрите на оценочное число строк для Index Scan и Clustered Index Scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 15:11 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
авторВесь вопрос скорее в том, что может кто знает, почему SQL Server пытается через datepart насильно индекс попользовать Меньше прогнозируемая стоимость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 16:26 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
TaPaKdawпропущено... стопудово пропустили. был такой твиттер про отличие index seek от index scan. и как связан ваш "комментарий" с вопросом? дак разве автор не упомянул SARGable? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 18:48 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Mike_zaTaPaKпропущено... и как связан ваш "комментарий" с вопросом? дак разве автор не упомянул SARGable? это означает seek что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 18:48 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Есть теория, что планировщик, при виде Year и Month, полагает, что ему будет достаточно первых 3 байт из искомого поля для поиска и сравнения. И достать эти 3 байта из индекса выглядит как раз очень соблазнительной перспективой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 19:27 |
|
||
|
YEAR and MONTH оказывается получше, чем прямое сравнение по датам
|
|||
|---|---|---|---|
|
#18+
Glebanski, А вас ни на секунду не смущает что первый план ожидает 1 строку, хотя на самом деле их возвращается 54429? Это одна из частых ошибок оптимизатора, и будь у вас побольше строк и посложнее план вообще все бы встало надолго. А когда во ктором случае сервер понимает с чем реально имеет дело, то решает просто просканировать кластерный, что оказывается намного дешевле, судя по вашим же цифрам. Вы короче два раза нагибаете сервер: 1. Сначала из-за YEAR and MONTH он не может оценить количество строк и строит ущербный план. 2. А потом "индекс был успешно заюзан". Успешно, это когда поиск по индексу, у вас скан. А почему? Потому что не SARGable! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 21:46 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39773397&tid=1688298]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 533ms |

| 0 / 0 |
