|
|
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Прошу пояснить почему так долго выполняется запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. План Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Видно, что основное время расходуется в этой части операции Код: sql 1. 2. Что делает СУБД в этом месте? Как снизить издержки? Увеличение work_mem результата не дает, разве что сортировка в памяти происходит, но она и так относительно невелика. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 17:12 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
big-trot, количество запланированных и реальных строк (rows) сильно различяются. непробовали ANALYZE base_pasu_p1_2015_12_04? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 17:18 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Lonepsycho непробовали ANALYZE base_pasu_p1_2015_12_04? Сделал, не помогает. Количество стало совпадать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 17:25 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
После ANALYZE base_pasu_p1_2015_12_04 отвалилось сканирование по индексу и общее время запроса на 30% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 17:31 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Несколько изменил запрос, скорость увеличилась в три раза (~ 10 сек.). Полагаю, что ничего нельзя сделать еще лучше, это из-за distinct on скорее всего. Сканируется вся таблица, далее сортируется и отбрасываются дублеры, всё это очень долго на полмиллиона записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 18:01 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
big-trotНесколько изменил запрос, скорость увеличилась в три раза (~ 10 сек.). Полагаю, что ничего нельзя сделать еще лучше, это из-за distinct on скорее всего. Сканируется вся таблица, далее сортируется и отбрасываются дублеры, всё это очень долго на полмиллиона записей. как бы техника выборки для подавления distinct -ом известна. основывается на подходящем индексе у вас был бы что--то вроде составного по: Код: sql 1. 2. 3. 4. далее -- как где--то богук приводил. (искать по автору и distinct) http://www.sql.ru/forum/882778/bystryy-podschet-distinct-values-po-indeksirovannym-polyam?mid=11326416#11326416 но у вас же наверное и другие выборки того же типа , но по другим "полям" говноджейсона, а это -- покрыть многообразие -- уже сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 18:14 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
big-trotНесколько изменил запрос, скорость увеличилась в три раза (~ 10 сек.). Полагаю, что ничего нельзя сделать еще лучше, это из-за distinct on скорее всего. Сканируется вся таблица, далее сортируется и отбрасываются дублеры, всё это очень долго на полмиллиона записей. Все время уходит на работу с JSON, доступ к его элементам (особенно если это JSON а не JSONB) - крайне дорогой так как каждый раз парсится весть текст JSOIN (т.е сколько раз там data_json парсится у вас на 1 строку вообще сложно сказать). JSON не для тех полей в содержимое которых база будет часто лазить, для этого колонки есть в таблице. Т.е. если у вас образовался частовызываемый запрос по элементу JSON - этот элемент должен стать колонкой в таблице. PS: Не удивлен, я вполне ожидал что с появлением JSON начнут такое делать и жаловаться что медленно работает. Классический пример как делать нельзя с postgresql и json. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 20:36 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, распарсить 478357 строк после фильтра , но до "дистинкт он" и распарсить rows=4535 вдоль seek по индексу -- 2 немного отдельные (по трудоёмкости) задачи. /*там изрядная часть json--барахла может в тостах валяться -- при проходе Loose indexscan--ом изрядную часть этих ненужных доступов можно буит отсечь. (т.к. они не потребуются)*/ а с тем, что запихивание заведомо реляционной структуры в жейсона -- зло -- полностью согласен. многажды именно этому пассажыру говорено. но разве ж убедишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 00:44 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39120871&tid=1997586]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 495ms |

| 0 / 0 |
