|
|
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Alibek B.В таблице PA строк много, в таблице CB строк меньше тысячи. Всего в PA порядка 1М строк. Для фильтра trunc(PA.MOMENT) = trunc(sysdate) около 1-2 тысяч строк. Для фильтра PA.MOMENT > CB.CHANGED около 3-5 тысяч строк (CB.CHANGED очень редко отстает от текущей даты больше чем на несколько дней). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 12:31 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Alibek B. Код: plsql 1. Запрос возвращает около десятка строк, выполняется моментально. PA.MOMENT проиндексирован.Где-то ты врёшь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 15:37 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
А зачем мне врать, спрашивая совета на форуме? Запрос выполняется 80мс, я считаю это моментальным. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 16:48 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
PA это BM_PERIODIC_ACCT. DDL такой: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 16:57 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Alibek B.А зачем мне врать, спрашивая совета на форуме?Потому что маловероятно, что ты никак не можешь догнать, что моментальная проиндексированность никакой погоды не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 17:34 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Я как-бы о другом говорил. Поскольку PA.MOMENT проиндексировано, то условие PA.MOMENT > CB.CHANGED должно использовать индекс и не должно быть причиной долгого выполнения запроса. Поэтому причиной долгого выполнения запроса при условии PA.MOMENT > CB.CHANGED должно быть не отсутствие индексов (для PA.MOMENT или CB.CHANGED), а что-то другое. Но мне непонятно, что это может быть, если при условии trunc(PA.MOMENT) = trunc(sysdate) запрос выполняется моментально, кардинальность в обоих вариантах различается не так уж и сильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 19:08 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
ElicAlibek B. Код: plsql 1. Запрос возвращает около десятка строк, выполняется моментально. PA.MOMENT проиндексирован.Где-то ты врёшь.Ну почему же С некоторых версий нормально юзает индекс по дате при TRUNC (INDEX FULL SCAN) А с использованием Transitive Closure (с 10.2, вроде) может юзать CHECK констрэйнты и использовать нормальный IRS Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2016, 08:10 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровНу почему жеЗдесь и по духу, и по факту не тот случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2016, 08:43 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровElicпропущено... Где-то ты врёшь.Ну почему же С некоторых версий нормально юзает индекс по дате при TRUNC (INDEX FULL SCAN) А с использованием Transitive Closure (с 10.2, вроде) может юзать CHECK констрэйнты и использовать нормальный IRS Слишком притянуто за уши ) Первый случай чистый подлог, использующий факт нахождения всех нужных данных в индексе. Во втором случае фокус не работает с bind. К запросу ТС это не имеет отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2016, 11:53 |
|
||
|
Подскажите, как правильно составить запрос, чтобы эффективно использовались индексы
|
|||
|---|---|---|---|
|
#18+
Да нет, конечно Мне просто показалось, что Elic намекает на то, что в данном случае индекс не будет использован (каюсь, смотрел только на заголовок темы, в тонкости не вникал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2016, 13:04 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39340916&tid=1887083]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 525ms |

| 0 / 0 |
