|
|
|
Параметризация -> Материализация -> Оптимазация
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Имею запрос (ниже), его архитектура (не менять) PARAMETER - получение параметров из внешнего источника PARAMETER_LIST - преобразования параметров списка в табличную форму Базовый запрос - ADBUS.V_CFA_STATUSOFCONTR_FACT со связью с параметрической таблицей Использую hint для комбинированных индексов Index_Combine Вариант 1 PARAMETER -> Преобразование строк посредством CONNECT BY -> Materialize -> Базовый запрос => План оптимазции 1 Вариант 2 PARAMETER -> Преобразование коллекции посредством table() -> Materialize -> Базовый запрос => План оптимазции 2 План оптимазции 1 - быстрый использует доступ типа INDEX RANGE SCAN в обоих индексах План оптимазции 2 - менее производительный использует доступ типа INDEX FULL SCAN в ОДНОМ из индексов Почему применение приема коллекций table(), который реализован ДО !!!!!!!! материализации привело к такому изменению плана Предполагаю, что мог потерять немного времени (1-2 сек) на разборе коллекции, но все должно было отфетчится во временную таблицу и базовый план остался бы без изменений Под базовым планом понимаю это .... from ADBUS.V_CFA_STATUSOFCONTR_FACT A inner join PARAMETER_LIST B on ( Trunc(A.DATE_FININSURANCE) between B.DBEG and B.DEND and B.KEYS is Null and B.TYPE in(0,1) and B.KIND in ('DAY') or B.LIST=A.ID_CONTRACT_SAP and Not B.KEYS is Null and B.TYPE in(0,1) and B.KIND in ('ONE') ) ..... Подскажите пожалуйста как исправить (т.е. коллекция + Index_RS) - заранее благодарен ! Запрос Код: 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. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. План оптимизации 1 Код: 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. План оптимизации 2 Код: 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. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:39 |
|
||
|
Параметризация -> Материализация -> Оптимазация
|
|||
|---|---|---|---|
|
#18+
HOME_X, Оракл считает что кардинальность коллекции(ций) 16360 (видимо у твоей базюльки блок 16K) тогда как она 1. Подскажи правильное число с помощью opt_estimate. Кроме того имеет смысл избавиться от этого HOME_X Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 16:35 |
|
||
|
Параметризация -> Материализация -> Оптимазация
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopHOME_X, Оракл считает что кардинальность коллекции(ций) 16360 (видимо у твоей базюльки блок 16K) тогда как она 1. Подскажи правильное число с помощью opt_estimate. Кроме того имеет смысл избавиться от этого HOME_X Код: plsql 1. 2. 3. 4. Принято - уточняю кардинальность коллекции select /*+ cardinality(A 1) */ A.*,'ATM' KIND,To_Date('01-02-2018','DD-MM-YYYY') DBEG,To_Date('28-02-2018','DD-MM-YYYY') DEND,0,2,Null from table(select ATM from PARAMETER) A !!!!! ПАМАГЛО !!!!! Спасибо за подсказку Уточните пожалуйста на примере Ваш метод "...помощью opt_estimate...." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 19:13 |
|
||
|
Параметризация -> Материализация -> Оптимазация
|
|||
|---|---|---|---|
|
#18+
HOME_X, Я верю, что ты сам разберешься https://blog.pythian.com/oracles-opt_estimate-hint-usage-guide/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 19:50 |
|
||
|
Параметризация -> Материализация -> Оптимазация
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Принято- выполнено - спасибо ! Код: 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. 51. 52. 53. 54. 55. 56. 57. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 00:32 |
|
||
|
|

start [/forum/moderation_log.php?user_name=Pliman]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
18ms |
get settings: |
8ms |
get forum list: |
20ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
21ms |
get settings: |
5ms |
get forum list: |
14ms |
get settings: |
6ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 3565ms |
| total: | 3931ms |

| 0 / 0 |
