Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

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

start [/forum/topic.php?fid=46&tablet=1&tid=1689950]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 419ms |

| 0 / 0 |
