|
|
|
Не могу уйти от фуллскана таблицы
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Коллеги, не могу уйти от фуллскана, стало интересно и решил разобраться. Но всё тщетно, только уж совсем недокументированный хинт precompute_subquery помогает. Но его использование не есть гуд, даже оракл не решается на этот подвиг ). Итак, вот воссозданная ситуация: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. На этом этапе понятно, что в таблице test1 содержится ровно по 9 записей с b=6 и b=7. Теперь делаем так: Код: plsql 1. 2. 3. 4. 5. План: Код: 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. В плане видим фуллскан таблицы test1, но непонятно почему. У нас всего 18 строк для обноления, вполне можно пробежаться по битмапу и далее по rowid. Хочу чтобы было как-то так: Код: 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. такой план можно получить если в запросе поменять "where b in (select * from test2 where a in (6,7))" на "where b= (select * from test2 where a in (6,7))" или воспользоваться хинтом о котором я говорил выше. Но хочется найти или другой хинт или сделать какой-то другой финт, чтобы оракл понял как нужно действовать. P.S> У меня там конечно всё сложнее и начитываются таблички немного иначе, в частности сначала у меня читается test1 и лишь затем test2, но в этом плане суть ясна. Думаю если удастся поставить запрос на нужный план в этом случае, то и в моём я так же смогу это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 06:19 |
|
||
|
Не могу уйти от фуллскана таблицы
|
|||
|---|---|---|---|
|
#18+
Если Oracle 11, то как вариант через baseline привязать нужный план к вашему запросу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 09:02 |
|
||
|
Не могу уйти от фуллскана таблицы
|
|||
|---|---|---|---|
|
#18+
Pavel_PV, Версия? В 12.1.0.2.160419 все в порядке, outline data прилагается. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 09:09 |
|
||
|
Не могу уйти от фуллскана таблицы
|
|||
|---|---|---|---|
|
#18+
при увеличении test1 Код: plsql 1. oracle подхватывает желаемый ТС план однако, при сохранении пропорций Код: plsql 1. 2. 3. 4. 5. всё возвращается на круги своя Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production с ув. IT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 11:42 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39334082&tid=1887136]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
192ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 501ms |

| 0 / 0 |
