Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть 2 таблицы со связью один ко многим. Нужно создать вьюху, где выводятся последняя запись к каждой записи опорной таблицы. Последняя запись определяется сортировкой по столбцу с датой создания. Плюс есть условия, что выводиться должны только строки после определенной даты. Ну и при вызове с этой вьюхи накладываются внешние условия. Реализовал я следующим образом Код: sql 1. 2. 3. 4. 5. 6. 7. Вьюха в целом то работает. Но каждый запрос занимает 30-50 секунд, что не допустимо. По плану запросов, основная стоимость падает на сортировку и фильтрацию внутри outer apply Как это можно оптимизировать, можете подсказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 11:03 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
1. Индекс на table2 (contactId, CreateOn ) 2. table3 убрать из outer apply ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 11:12 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Oriaraniar, индексы по CreateOn не особо помогут, т.к. в запросе нечеткое сравнение. Хотя оптимизатор может выбрать скан индекса и это будет в 2-3 раза быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 16:52 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовOriaraniar, индексы по CreateOn не особо помогут, т.к. в запросе нечеткое сравнение. Хотя оптимизатор может выбрать скан индекса и это будет в 2-3 раза быстрее.Для выполнения условия на больше-меньше вполне может использоваться Index Seek, поэтому сразу так заявлять преждевременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 17:04 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, да, для выборки может и помочь, но сортировку не улучшишь. В таких ситуациях помогают только предварительно вычисленные наборы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 17:42 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовГавриленко Сергей Алексеевич, да, для выборки может и помочь, но сортировку не улучшишь. Оптимизатор будет использовать сортировку CreateOn. Ваш КО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 17:45 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Сортировка по CreateOn будет использоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 17:53 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовГавриленко Сергей Алексеевич, да, для выборки может и помочь, но сортировку не улучшишь. В таких ситуациях помогают только предварительно вычисленные наборы данных. из вредности будет пересортировывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 18:00 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
aleks222Сортировка по CreateOn будет использоваться. Индекс (contactId, CreateOn ) будет использован при сортировке? Сомнительно что-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 18:18 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Ошибался, используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 18:35 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Oriaraniar, попробуйте такой вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 23:26 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
напаркуа тут вообще этот апплай.???? з.ы. ну CTE тоже для красоты чтоли? select (что-то там) from Table1 t1 left join ( select t2.contactId, rn = row_number() over(partition by t2.contactId order by t2.CreateOn desc) rn from table2 t2 left join table3 t3 on .... where t2.CreateOn > '20180401' ) t2 on t2.contactId = t1.Id and t2.rn = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2018, 09:53 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, ну да, для красоты. Не для рекурсии же :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2018, 11:16 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
TaPaKВладислав КолосовГавриленко Сергей Алексеевич, да, для выборки может и помочь, но сортировку не улучшишь. В таких ситуациях помогают только предварительно вычисленные наборы данных. из вредности будет пересортировывать? если хватает полей ТОЛЬКО из индекса - конечно не будет. А если надо лукапиться в кучу или кластер - это рандом рид. Если есть еще фильтры - может выйти и дешевле. Например select * from table where column1 = 0 order by column2 где по column1 нет индекса т.е. просто фильтр. А по column 2 индекс есть но без include (column2). И если условие для всех column1 всегда false - то всегда фул скан будет быстре чем индекс скан+lookup в таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2018, 11:16 |
|
||
|
Проблема с производительностью outer apply
|
|||
|---|---|---|---|
|
#18+
Ivan Durakнапаркуа тут вообще этот апплай.???? з.ы. ну CTE тоже для красоты чтоли? select (что-то там) from Table1 t1 left join ( select t2.contactId, rn = row_number() over(partition by t2.contactId order by t2.CreateOn desc) rn from table2 t2 left join table3 t3 on .... where t2.CreateOn > '20180401' ) t2 on t2.contactId = t1.Id and t2.rn = 1 это может быть намоного хуже чем APPLY авторесли хватает полей ТОЛЬКО из индекса - конечно не будет. А если надо лукапиться в кучу или кластер - это рандом рид. Если есть еще фильтры - может выйти и дешевле. какие ещё ситуации не относящиеся к теме вы хотите обсудить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2018, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39646539&tid=1689703]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 470ms |

| 0 / 0 |
