|
Автовыбор партиции в селекте
|
|||
---|---|---|---|
#18+
Добрый день. Допустим у нас есть таблица journal, содержащая в себе поля: ID_ACCOUNT, RUB, DATE_FROM, DATE_TO. Эта таблица партиционирована помесячно на поле DATE_FROM ID_ACCOUNT - ID счета RUB - остаток в рублях DATE_FROM - дата начала действия остатка DATE_TO - дата конца действия остатка Допустим есть функция GET_RUB (P_ID_ACCOUNT number, P_DATE datе), которая возвращает данные по селекту: Код: plsql 1. 2. 3.
Можно ли каким то образом сделать так, чтобы автоматически (возможно через хинты, возможно ещё как то) выбиралась нужная партиция в селекте? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 17:25 |
|
Автовыбор партиции в селекте
|
|||
---|---|---|---|
#18+
В голову приходит использовать USER_TAB_PARTITIONS. Потом записывать имя нужно партиции в переменную и через динамический SQL подставлять в запрос. Но не хочется связываться с динамическим SQL, может можно как то по-другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 17:38 |
|
Автовыбор партиции в селекте
|
|||
---|---|---|---|
#18+
Arists, А почитать документацию? Предположим, что имена partitions имеют вид P0, P1 ...P(N). Соответственно, запрос будет выглядеть вот так: Код: plsql 1. 2.
Вместо P0 подставь имя необходимого partition. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 21:48 |
|
Автовыбор партиции в селекте
|
|||
---|---|---|---|
#18+
Arists Можно ли каким то образом сделать так, чтобы автоматически (возможно через хинты, возможно ещё как то) выбиралась нужная партиция в селекте? Оптимизатор прекрасно знает какие партиции читать и какие нет. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 22:31 |
|
Автовыбор партиции в селекте
|
|||
---|---|---|---|
#18+
А если есть локальный индекс на DATE_FROM то план: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 22:37 |
|
|
start [/forum/topic.php?fid=52&fpage=15&tid=1880046]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 233ms |
total: | 400ms |
0 / 0 |