|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
Есть партицированная таблица. На ней индекс. Выборка только по полю индекс не использует FFS. Код: 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. 94. 95.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 10:32 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
brzl, Так у вас в предикате присутствует поле, которого нет в индексе. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 10:56 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
jan2ary Так у вас в предикате присутствует поле, которого нет в индексе. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 11:21 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
brzl, Код: 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. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137.
вот только так получилось почему-то либо по всем партициям -тоже работает, как только добавляешь предикат доступа к партиции - ломается, хз почему ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 12:41 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
На металинке нашёл, что пишут CBO can use a Index Fast Full Scan (INDEX_FFS) as long as the index contains all the columns that are needed for the query, and at least one column in the index key has the NOT NULL constraint. The leading column of an index is not required for an INDEX_FFS to be performed. Note that the use of an INDEX_FFS does not necessarily return the rows in sorted order. Ordering is dependent on the order that the index blocks are read and rows are only guaranteed to be returned in a sorted order if an 'order by' clause is used. See: видимо даже если поле является ключом для партиций и индекс локальный, исключений не предполагается ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 13:10 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
brzl, The optimizer considers this scan when a query only accesses attributes in the index. Видимо, неявное указание секции не входит в это условие, поэтому второй вариант - создать другой индекс с ключом секции. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 13:20 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
feagor brzl, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
вот только так получилось почему-то либо по всем партициям -тоже работает, как только добавляешь предикат доступа к партиции - ломается, хз почему Путь к нужной партиции можно сократить немного Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 15:46 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
Предполагаю, что проблема в том, что в общем случае в партиции может быть много значений. И для частного случая, где значение в партиции одно и оно же в предикате есть оптимизация для index range/full scan, где оракл понимает, что индекса достаточно и доступ к таблице не нужен, но даже этой оптимизации нет за пределами частного случая Код: 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.
ну а для index fast full scan этой оптимизации и для частного случая нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 16:43 |
|
Index_FFS и партиции
|
|||
---|---|---|---|
#18+
Похоже предыдущий мой пример не совсем верный. Там шаг 3 появляется не из-за нескольких значений, а из-за PARTITION LIST INLIST и KEY(I) как результат. Вот так, например, снова нет избытоного шага Код: 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.
но Index Fast Full Scan работать по прежнему не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 17:26 |
|
|
start [/forum/topic.php?fid=52&fpage=51&tid=1881476]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 132ms |
0 / 0 |