|
Оптимизация запроса с OR
|
|||
---|---|---|---|
#18+
Больше 3 часов выполнялся запрос с OR, переписали через UNION - за секунду выполняется. Практически все тормоза в проекте из-за подобных случаев. Получается на больших данных оператор OR вообще нельзя использовать в mssql? Пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Так как запросы большие, не хочется дублировать кучу кода через UNION, особенно если не один OR. Есть ли другие варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 19:26 |
|
Оптимизация запроса с OR
|
|||
---|---|---|---|
#18+
tnik_28, сравните планы запросов, увидите разницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 21:28 |
|
Оптимизация запроса с OR
|
|||
---|---|---|---|
#18+
Владислав Колосов tnik_28, сравните планы запросов, увидите разницу. OR через Table Spool , Union через Hash match выполняется. Но как это поменять без существенной модификации запроса с OR. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 22:15 |
|
Оптимизация запроса с OR
|
|||
---|---|---|---|
#18+
tnik_28 Но как это поменять без существенной модификации запроса с OR. Потому что с такими предикатами возможен только Nested Loops. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 22:34 |
|
Оптимизация запроса с OR
|
|||
---|---|---|---|
#18+
tnik_28, если вы указали такой предикат, то возможен лишь перебор подходящих значений множества Б для каждого элемента множества А. Для такого предиката невозможно выполнить ни сравнение слиянием или расчетом хэш ни протолкнуть его в постобработку. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 12:48 |
|
Оптимизация запроса с OR
|
|||
---|---|---|---|
#18+
Нужно именно 2 отдельных индекса и FORCESEEK указать CREATE NONCLUSTERED INDEX IX_tx1 ON tx1 (x1); CREATE NONCLUSTERED INDEX IX_tx2 ON tx1 (x2); select * from tx1 t1 WITH (FORCESEEK) inner join tx1 t2 on(t1.x1=t2.x1 or t1.x2=t2.x2) and t1.id!=t2.id ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2021, 01:16 |
|
|
start [/forum/topic.php?fid=46&fpage=14&tid=1684295]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 535ms |
0 / 0 |