|
|
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
есть запрос, выполняется очень быстро (3 сек). При добавлении параметров group by и order by время выполнения увеличивается до 10 мин. Как оптимизировать group by и opder by - для всех полей, по которым делается группировка и сортировка есть индексы. А ситуация усугубляется тем, что в пакете несколько однотипных запросов и время выполнения пакета затягивается до 15 мин. С чего лучше начать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:34 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Начать надо с того, что написать запрос в форуме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:59 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Вообще он достаточно большой, хотя опубликовать конечно не проблема. А каких-то общих правил оптимизации предложений группировки и сортировки нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 18:06 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Может быть тогда поможете разобраться с трассировкой? Что означает такое окончание файла трасиировки (по всему пакету): Код: 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. Откуда такое кол-во рекурсивных вызовов и как с ними можно бороться (если нужно конечно)? Или все таки вам, уважаемые гуру, нужен запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 18:29 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
короче корешок тут такие дела во первых наверно коряво написан запрос и когда ты сначала его запрашиваешь он выбират к примеру первых 5-10 записей и все, а когда ты пишешь ORDER BY то он выбирает сначала все записи и потом начинает их сортировать и из-за это время просто увеличвивается до минут тут надо запрос смотреть, индексы и все такое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:49 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
2 New one В этом случае может помочь скидывание результатов запроса в промежуточную таблицу и уже потом по ней группировка и сортировка? Индексы есть по всем полям, по которым проходит группировка. Explain plan показывает что все ингдексы задействованы. Там где я точно знаю, что выбирается более 50% записей индексы не используются - то есть судя по плану все верно :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 09:45 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
можно конечно и во временную таблицу, очень часто это помогает, но тут надо тебе оценить временные затраты на формирование данной таблицы, просто если записей достаточно много, то довольно длительной будет заполнение вр. таблицы (с формированием индексов) и т.д. может даже сначала придется грохать индексы перед вставкой потом их создавать тут короче надо смотреть так не глядя на реальное положение и не скажешь. но лучше всего попробывать что нибудь поковырять в запросах, и уже если не поможет то тогда только таблицы хинты какие-нить использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 09:56 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Запросы перековырены уже от и до. Косты снижены до 116. Вообще запрос выглядит так: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 10:15 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Klassika! Ty uveren, chto tebe nugny vse eti "or"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 10:23 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
К моему величайшему сожалению - да :(( может быть будет работать быстрее если их сделать union? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 10:25 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Может все эти "or" вынести в from как подзапрос к "dogovors"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 10:44 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Изначально так и было - работает еще хуже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 10:45 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Вопрос такой, а что сильнее замедляет работу order или group by ? Без одного из них вернулась ли былая скорость? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 12:48 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
Замедляют одинаково. То есть только группировка или только сортировка или обе вместе выполняются одно и тоже время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 12:53 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
like '%2.6%' и обещал работать быстро ? помоему он полным перебором по таблице ходит. При том, что многие подзапросы кореллированные-врядле удастся оптимизировать. Я бы хранимую процедуру написал вместо запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 13:02 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
короче если ты говоришь, что уже все перековырено и это выполняется около 10 минут, тогда делай временную таблицу или несколько таких таблиц с промежуточными вычислениями в них. (можешь их чере триггеры заполнять) и все я думаю будет ОК.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 14:17 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
>Запросы перековырены уже от и до. Косты снижены до 116. Вообще запрос >выглядит так: опять гадание на кофейной гуще вместо рассмотрения плана выполнения запроса, статистики и параметров сессии (инстанса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 14:25 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
По-моему здесь все очевидно.Пусть группировка и сортировка происходит хоть по суппер индексам , но ведь они из разных таблиц - таким образом чтобы произвести сортировку надо проводить index range scan по каждой из таблиц, а потом пересекать результат. Так вот выход - или упростить запрос , так чтобы group by и order by использовали только столбцы одной таблицы , причем на них должен сущ. индекс, либо создавай темп. таблицу , столбцы которой индексируй по полям группировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 15:19 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
>либо создавай темп. таблицу , столбцы которой индексируй по полям группировки. Спасибо, похоже это именно то, что было нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 17:15 |
|
||
|
Htlp! помогите новичку разобраться с оптимизацией
|
|||
|---|---|---|---|
|
#18+
>>либо создавай темп. таблицу , столбцы которой индексируй по полям >>группировки. >Спасибо, похоже это именно то, что было нужно. Неужели временные затраты на создание и индексирование временной таблицы будут меньше чем сортировка данных полученных в результате запроса? В чем тут выигрышь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2003, 17:29 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32133012&tid=1991127]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 576ms |

| 0 / 0 |
