|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
В очень большом запросе для 2008 сервера очень медленно работает следующий кусок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Как можно его оптимизировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:49 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
Какие индексы есть на таблицах из запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:04 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
Перепишите 42 строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:04 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
invm, Первичные ключи по RowID и некоторое число неуникальных. Судя по плану - индексы используются. Я вот думаю, если этот кусок попытатся вынести в материализованное представление - это поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:12 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
1C Developer Перепишите 42 строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:18 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
BlackEric Первичные ключи по RowID и некоторое число неуникальных. Не хотите отвечать - тогда показывайте актуальный план. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:19 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
BlackEric, если у вас в этом подзаросе есть корреляция на данные из внешней таблицы - как вы оформите подзапрос в виде представления, да ещё и материализованного? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:19 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
План в аттаче ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:25 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
BlackEric, По плану - нечему там тормозить. Что и подтверждается статистикой по выполнению и ожиданиям. CPU - 13 мс, ожиданий ASYNC_NETWORK_IO - 267 мс ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:39 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
BlackEric В очень большом запросе для 2008 сервера очень медленно работает следующий кусок: Как можно его оптимизировать? Вангую: Тормозит у вас не этот кусок, а то, что он миллион раз вызывается внешней частью запроса. Там outer apply (select top (1) ... - значит будет nested loop, этот кусок вызовется 1 раз для каждой строки внешней выборки. Если во внешней выборке - миллион строк, то миллион раз и прокрутится. Замените outer apply на left join, a необходимую вам "верхнюю" запись получайте пронумеровав Row_number() over (partition by rt.ID order by 1/0) N 1/0 - потому что у вас там top (1) без сортировки. Ну и во внешнем запросе сделайте Select из этой выборки Where N=1. Engine в таком случае, возможно, сможет использовать другие варианты соединения, hash или merge join, и ваш подзапрос, возможно, будет вызван 1 раз. Такие общие соображения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 22:57 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
BlackEric В очень большом запросе для 2008 сервера очень медленно работает следующий кусок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Как можно его оптимизировать? top(1) без order by - явный признак ненужности. Ибо запрашивающему пофиг, что там возвратится. => убрать совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 06:48 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
Судя по select top(1) cast(1 as bit) as ex у вопрошающего есть еще вариант: выучить таки exists(). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 07:03 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
aleks222 Судя по select top(1) cast(1 as bit) as ex у вопрошающего есть еще вариант: выучить таки exists(). Ему нужно получить признак наличия записей в подзапросе. Как EXISTS поможет улучшить запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2020, 11:30 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
Руслан Дамирович aleks222 Судя по select top(1) cast(1 as bit) as ex у вопрошающего есть еще вариант: выучить таки exists(). Ему нужно получить признак наличия записей в подзапросе. Как EXISTS поможет улучшить запрос? exists выполняется через join. Ежели ты не в курсе, join эффективнее apply. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2020, 06:07 |
|
Оптимизировать подзапрос
|
|||
---|---|---|---|
#18+
aleks222 top(1) без order by - явный признак ненужности. Ибо запрашивающему пофиг, что там возвратится. => убрать совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2020, 11:36 |
|
|
start [/forum/topic.php?fid=46&fpage=71&tid=1686558]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 157ms |
0 / 0 |