|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
Всем привет. Вот задался вопросом, как в план вкорячить HASH_UNIQUE вместо sort_unique для определенного вида запросов. Лучше используя хинты, но можно и параметры сессии. Кратко зачем. В случае если у вас есть большая таблица и она хранится в IM, то в случае с hash unique идёт скан словаря IM и данные возвращаются быстро, в случае же sort_unique нужно будет подождать несколько секунд т.к. выполняется именно сканирование всего столбца. Это из личных наблюдений и тестов, если у кого-то есть другая информация буду признателен. Заранее скажу, что количество различных значений в колоноке изначально меньше чем 65001. Но убрать это условие нельзя на данный момент :). По итогу в первом запросе в плане хочется получить строчку HASH UNIQUE. Для примера: Код: plsql 1. 2. 3.
Код: plsql 1. 2. 3. 4.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Код: plsql 1. 2. 3. 4.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 07:27 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
Pavel_PVколичество различных значений в колоноке изначально меньше чем 65001Слетает на sort, потому что с hash нельзя по stop key прервать дальнейшее формирование строк. Попробуй вместо distinct использовать group by и убрать сортировку, но вряд ли это перебьет rownum. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 08:16 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
-2-, Хотя есть вариант перебить stop key. Написать подзапрос в подзапрос с where rownum > 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 08:20 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
Не понимаю о чем речь. Вариантов править запрос нет, только хинты или параметры сессии. Я не хочу сделать только hash unique, я хочу заменить sort unique на Hash Unique + что-то ещё. Этого уже хватит, чтобы запрос отстреливал ибо hash unique позволяет сканировать только словарь IM. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 09:12 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
Pavel_PVВариантов править запрос нетsql translator ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 09:31 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
Запросы генерятся автоматически и их количество весьма велико. Но перед выполнением во внутренний select можно пробросить хинт на всю пачку или выставить параметр сессии. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 10:02 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
Pavel_PV, Pavel_PVВариантов править запрос нет, только хинты или параметры сессии. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 21:22 |
|
в плане сделать hash_unique вместо sort_unique
|
|||
---|---|---|---|
#18+
SeaGate, как всё просто оказалось. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 05:34 |
|
|
start [/forum/topic.php?fid=52&fpage=87&tid=1882893]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 139ms |
0 / 0 |