|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Подскажите плиз....Мож я чего не так соображаю.... Есть таблица ~15-20 млн. записей.... Насчитываю сумму с группировкой записей по одному из полей, индекс по этому полю построен... Но в ExplainSQL этот индекс не отображается... Как это понимать??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 09:46 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
встречные вопросы: - этот самый запрос идет по всей таблице или только к определенной ее части? - не используется ли в этом случае какой-либо другой индекс? и, как вариант - добавте в тот самый ваш индекс то самое поле, сумму по которому подбиваете через INCLUDE, может тогда будет использоваться вообще только индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 10:42 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Хм... Вообще-то в запросе есть еще условие на группу записей......А вот индекса по полю с условием нет.... А что такое через INCLUDE??? это как, можно немного подробнее.... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 12:06 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
В смысле я правильно понял, что для sum(p1*p2) я должен в INCLUDE передавать и p1,и p2??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 12:09 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
create table t (id int,dt date, sm decimal(17,2), и еще куча полей) create index iname on t (dt) include sm - поле sm входит в индекс но не входит в ключ индекса select dt,sum(sm) from t where dt between :dtstart and :dtend group by dt select sum(sm) from t where dt between :dtstart and :dtend в этих запросах скорее всего саму таблицу оптимизатор вообще трогать не будет а возьмет и просканирует диапазон индекса, а сумму возьмет из индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 12:22 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
А как насчет MQT? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 12:37 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Построил отдельный индекс на поле, по которому задается условие... ExplainSQL выдал результат еще медленнее...~ на 5%... А чего такое за MQT? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 12:42 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
И еще проблема... DB2 пишет, что INCLUDE работает только для уникальных ключей индекса:( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 12:48 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
TORTА чего такое за MQT? Для оперативности я только процитирую следующее... Administration Guide: Implementation Version 8.2, Chapter 4. Creating tables and other related table objects, Creating a materialized query table (page 121) A materialized query table (MQT) is a table whose definition is based on the result of a query. As such, the materialized query table typically contains pre-computed results based on the data existing in the table or tables that its definition is based on. If the SQL compiler determines that a query will run more efficiently against a materialized query table than the base table or tables, the query executes against the materialized query table, and you obtain the result faster than you otherwise would. Использование MQT, я думаю, может обеспечить существенный прирост в произодительности... С уважением, kdima71. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:06 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Небольшое уточнение... Для версии 7.2 все вышеперечисленное подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:10 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Я начал изучать DB2 c версии 8.2, поэтому могу процитировать только следующее... [quot IBM DB2 Universal Database. What’s New Version 8. Chapter 3. Performance enhancements. Materialized query tables (page 28)] ...Prior to Version 8, DB2 UDB supported summary tables, also known as automatic summary tables (ASTs). Summary tables are now considered to be a special type of MQT whose fullselect contains a GROUP BY clause summarizing data from the tables referenced in the fullselect. [/quot Я думаю, Вам необходимо познакомиться с этим поближе... С уважением, kdima71. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:22 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
вопросы: -каждый подобный запрос обрабатывает какое количество строк из таблицы? -статистика собрана (RUNSTATS)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:24 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Прошу прощения! Торопился... Я начал изучать DB2 c версии 8.2, поэтому могу процитировать только следующее... IBM DB2 Universal Database. What’s New Version 8. Chapter 3. Performance enhancements. Materialized query tables (page 28) ...Prior to Version 8, DB2 UDB supported summary tables, also known as automatic summary tables (ASTs). Summary tables are now considered to be a special type of MQT whose fullselect contains a GROUP BY clause summarizing data from the tables referenced in the fullselect. Я думаю, Вам необходимо познакомиться с этим поближе... С уважением, kdima71. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:28 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Каждый запрос достает ~10000-15000 записей.... Runstats собирал:) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:33 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Каждый запрос достает ~10000-15000 записей.... Runstats собирал:) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:34 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Наверное у тебя запрос параметризированный, попробуй вовспользоваться SELECTIVITY типа: select * from .. where dt =:a selectivity 0.0001 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 13:54 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Спасибо... Вроде отыскал где затуп был.... В общем я выбирал записи с условием date(dts) between :DT1 and :DT2, где DT1 и DT2 были значениями типа date. Дык вот DB2 из-за date(dts) не использовала индекс по dts..... Пришлось переписать запрос.... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 14:24 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
А что? Selectivity влияет на производительность??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 16:54 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
влияет на оптимизатор и построение плана запроса. причем сильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 16:56 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
Вообще у меня запрос следующего плана: в хранимке формируется строка, потом PREPARE, затем EXECUTE....Так что в явном виде параметры я вроде бы не подставляю.... Поможет selectivity в моем случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 18:07 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
По какому критерию подбирать этот параметр (я все про selectivity)?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2005, 18:09 |
|
Использование индекса в запросе....
|
|||
---|---|---|---|
#18+
делаем: db2set DB2_SELECTIVITY=Yes Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
и смотрим платы запросов для: Код: plaintext 1. 2.
db2expln -d test -u db2admin ibmdb2 -t -g -z @ -f sel.pln Код: 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. 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2005, 10:58 |
|
|
start [/forum/topic.php?fid=43&msg=32885299&tid=1606023]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 408ms |
0 / 0 |