|
|
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Может, кто нибудь знает, как ускорить выполнение запроса. В упрощенном виде задача выглядит следующим образом. Таблица содержит два поля id и vl (некоторое числовое значение). Для каждого значения id нужно посчитать сумму всех vl, для которых id меньше или равно этого значения. Код: plaintext 1. 2. 3. 4. Проблема в том, что запрос работает порядка 20 сек., хотя таблица содержит порядка 500 записей. Правда она содержит множество других полей, но этот факт вроде не должен оказавать большого воздействия на время выполнения запроса. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 10:22 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Наверное, я легкомысленно ошибся при выборе названия топика, следовало бы написать что-то типа "Погите новичку..." :) На самом деле я с Ораклом знаком очень и очень поверхностно. И все же надеюсь на вашу снисходительность. Может быть, у кого-нибудь есть какие-то косвенные мысли по поводу запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:14 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
План выполнения запроса в студию, пожалста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:16 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Какая версия Оракла? На Oracle 9.2 Enterprise Edition (может быть и на 8i) нарастающий итог: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:20 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
2 softbuilder@inbox.ru В жизни несколько отличаются названия таблиц и полей: Код: plaintext 1. 2. 3. 4. 5. План (не знаю в силу собственного ламерства как его красивее отобразить): Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:27 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
2 Denis Popov Oracle 8i EE 8.1.6.3.0 И еще (и да не прогневаются на меня продвинутые девелоперы и гуру), что значит кусок Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:33 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
2 Denis Popov Большое человеческое спасибо! Действительно работает. Только я все равно не въехал, в эту синтаксическую конструкцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:40 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
growing - просто пользовательское название колонки, а все остальное: Oracle8i Data Warehousing Guide SQL for Analysis Windowing Functions http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76994/analysis.htm#14924 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:40 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
1) select p2.id, sum(p1.vl) from table1 t1, table1 t2 where t1.id <= t2.id group by t2.id Че за алиасы p2 и p1? Вы их даже не объявили. 2) не уверен что индексы здесь будут использоваться (см. план выполнения запроса) если он есть по id. А так для каждой строки из табле1 выполняется запрос select t2.id, sum(t1.vl) from table1 t1, table1 t2 where t1.id <= t2.id group by t2.id Выводы делайте сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:10 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
2 raven13 1) действительно с p1 и p2 - это я погорячился, на самом деле я имел ввиду t1 и t2: Код: plaintext 1. 2. 3. 4. Приношу извинения. 2) насчет индексов, насколько я понимаю план выполнения запроса (а я, к сожалению, очень немного в нем понимаю) один индекс I_SD_PORTF_OBJKEY все таки отрабатывает, но тем не менее от времени выполнения запроса становится совсем грустно. Вариант, который предложил Denis Popov работает на ура (т. е. вместо 20 сек. - ~0,5). На нем, пожалуй, и остановлюсь. 3) Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:48 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32159295&tid=1990590]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 347ms |

| 0 / 0 |
