Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
Запрос такой: Код: sql 1. 2. Результат: 0 строк за 20 сек. Код: sql 1. 2. Результат: 0 строк за 0 сек. Код: sql 1. Результат: 0 строк за 0 сек. Код: sql 1. Результат: 30000 строк за 0 сек. Я вот чет не могу понять как if exists усложняет запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 17:34 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxЯ вот чет не могу понять как if exists усложняет запрос?Никак не усложняет. Первый запрос читает данные с диска, остальные уже из кеша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 17:43 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
invmНикак не усложняет. Первый запрос читает данные с диска, остальные уже из кеша. Спасибо за ответ! Почему второй запрос не читает с диска? Где можно почитать про это? Первый раз с этим сталкиваюсь... Я решил проблему так: having(count)>1 => having(count)>=2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 19:25 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxПочему второй запрос не читает с диска?Потому что первый уже прочитал эти же данные и они теперь есть в кеше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 21:33 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 21:49 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
Время выполнения запросов что я перечислил не зависит от последовательности, я могу проблемный запрос последним запустить, все равно он будет долго выполнятся, а остальные мгновенно... Мне нужен был только проблемный запрос, остальные я просто изменил для наглядности. после dbcc dropcleanbuffers - результат тот же... Если быть совсем точным, 6 секунд выполнялся этот запрос ( без if exists мгновенно ): Код: sql 1. 2. а вот этот висел 20 минут, после я его остановил ( без if exists мгновенно ): Код: sql 1. 2. И я не понимаю что происходит, и дело явно не в кэше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 02:18 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxИ я не понимаю что происходит, и дело явно не в кэшеДа, очень странно, конечно, от if exists не должно зависеть. Вы планы сравните, что ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 08:29 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
ПО-моему exists ищет до первых данных, а не собирает все. За счет этого должен быть быстрее, но оптимизатор видимо думает по-другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 09:11 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxВремя выполнения запросов что я перечислил не зависит от последовательностиПланы сравнивайте. Для exists будет генерироваться план, примерно такой как при использовании option(fast 1). И, скорее всего, таблицы там соединяются по NL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 09:32 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
KopellyПО-моему exists ищет до первых данных, а не собирает все. За счет этого должен быть быстрее, но оптимизатор видимо думает по-другому.А, ну да, от if exists не должно зависеть, если бы запрос был с top 1 А так получается неэквивалентно, причём теоретически if exists или select top 1 должно быть быстрее, чем просто select. А на практике.... :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 09:38 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
invmfumitoxВремя выполнения запросов что я перечислил не зависит от последовательностиПланы сравнивайте. Для exists будет генерироваться план, примерно такой как при использовании option(fast 1). И, скорее всего, таблицы там соединяются по NL. Ответ неверен. Верный ответ: завязывайте с группировкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 09:42 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
Оставил запрос на ночь выполняться: Код: sql 1. 2. Результат: 3 часа, 0 записей! Сравнил планы... Оргинал - index scan Без if exists - parallelism, index seek c if exists но having(count)>=2 - parallelism, index seek В общем все модификации кроме оригинала выполняются с параллелизмом, потому и так быстро. Вопрос... почему на оригинал не срабатывает?))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 14:04 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
статистики на обоих таблицах обновляли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 14:12 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
Дедушка, Каждый день план обслуживания делается включая обновление статистики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 14:23 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
если возможно - приведите скрипты создания таблиц, - сколько строк в каждой - распределение данных (сколько у вас получается групп с count=1 и сколько >1) - скрипт создания индекса. попробую воспроизвести у себя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 14:54 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxВопрос... почему на оригинал не срабатывает?))) Это оптимизатор толсто намекает на бездарно написанный запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:21 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxКаждый день план обслуживания делается включая обновление статистики а статистика с fullscan обновляется? что если выполнить Код: sql 1. 2. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:26 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
fumitoxСравнил планы... Оргинал - index scan Без if exists - parallelism, index seek c if exists но having(count)>=2 - parallelism, index seek В общем все модификации кроме оригинала выполняются с параллелизмом, потому и так быстро.А без if exists, но с top 1? Видимо, хитрый оптимизатор думает, "а фигня, щас в самом начале найдётся count>1, чего мне на распараллеливание тратиться?" А там наверное мало дубликатов. для having(count)>=2 он такого предположения не делает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:38 |
|
||
|
Непонятно долгое выполнение запроса if exists...
|
|||
|---|---|---|---|
|
#18+
dies irae, Код: sql 1. 2. После выполнения включился параллелизм на проблемном запросе и теперь все со свистом выстреливает, спасибо! Пошел план обслуживания ковырять... Всем огромное спасибо за помощь следствию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 16:00 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39628251&tid=1689950]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 394ms |

| 0 / 0 |
