|
|
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
qwwqpcadviserпропущено... индексы есть и по the_geom, id, gid, source, target с применением NOT EXISTS, тоже пробывал результат - хуже результат - в теме, чуть выше гне надо пробЫвать, пробудете так всё на свете надо сделать что просят, если лень читать -- я вытащил наружу передаваемую в C динамику -- и прошу план по ней, а не по внешнему запросу исходный вариант Код: sql 1. 2. 3. 4. 5. 6. Result (cost=120.00..3133126.09 rows=1098593 width=494) (actual time=0.032..6952.084 rows=8746687 loops=1) Buffers: shared hit=23595 read=728140, local hit=3 Append (cost=120.00..3133126.09 rows=1098593 width=494) (actual time=0.032..5770.488 rows=8746687 loops=1) Buffers: shared hit=23595 read=728140, local hit=3 -> Seq Scan on road_addedges (cost=120.00..248.80 rows=55 width=152) (actual time=0.032..0.037 rows=6 loops=1) Filter: ((NOT (hashed SubPlan 1)) AND (NOT (hashed SubPlan 2)) AND (NOT (hashed SubPlan 3)) AND ((NOT (the_geom && '0103000020E610000001000000040000000000000000804A400000000000004A4000000000008049400000000000004C400000000000804B400000000000004C400000000000804A400000000000004A40'::geometry)) OR (NOT _st_intersects(the_geom, '0103000020E610000001000000040000000000000000804A400000000000004A4000000000008049400000000000004C400000000000804B400000000000004C400000000000804A400000000000004A40'::geometry)))) Buffers: local hit=2 SubPlan 1 -> Seq Scan on road_deledges (cost=0.00..34.00 rows=2400 width=4) (actual time=0.001..0.001 rows=2 loops=2) Buffers: local hit=2 SubPlan 2 -> Seq Scan on road_delnodes (cost=0.00..34.00 rows=2400 width=4) (actual time=0.001..0.001 rows=0 loops=2) SubPlan 3 -> Seq Scan on road_delnodes (cost=0.00..34.00 rows=2400 width=4) (actual time=0.001..0.001 rows=0 loops=2) -> Seq Scan on edges (cost=120.00..3132877.29 rows=1098538 width=494) (actual time=0.030..5074.961 rows=8746681 loops=1) Filter: ((NOT (hashed SubPlan 1)) AND (NOT (hashed SubPlan 2)) AND (NOT (hashed SubPlan 3)) AND ((NOT (the_geom && '0103000020E610000001000000040000000000000000804A400000000000004A4000000000008049400000000000004C400000000000804B400000000000004C400000000000804A400000000000004A40'::geometry)) OR (NOT _st_intersects(the_geom, '0103000020E610000001000000040000000000000000804A400000000000004A4000000000008049400000000000004C400000000000804B400000000000004C400000000000804A400000000000004A40'::geometry)))) Buffers: shared hit=23595 read=728140, local hit=1 SubPlan 1 -> Seq Scan on road_deledges (cost=0.00..34.00 rows=2400 width=4) (actual time=0.001..0.001 rows=2 loops=2) Buffers: local hit=2 SubPlan 2 -> Seq Scan on road_delnodes (cost=0.00..34.00 rows=2400 width=4) (actual time=0.001..0.001 rows=0 loops=2) SubPlan 3 -> Seq Scan on road_delnodes (cost=0.00..34.00 rows=2400 width=4) (actual time=0.001..0.001 rows=0 loops=2) Total runtime: 7291.332 ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 16:41 |
|
||
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
pcadviser, 1)очень полезно сделать analyze для road_deledges и для road_delnodes 2)а какую собственно производительность вы ожидаете от запроса который возвращает 9M строк и дальше еще что то с ними в сишном коде делает? Тем более что судя по цифрам именно сишная хранимка (и даже не запрос в ней) все время и тратят. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 16:47 |
|
||
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
qwwq2. как велик перечень ключей (source,target), по условиям Код: sql 1. 2. --исчислим ли этот набор (или его срезы) снаружи (т.е. охвачено ли всё fk-ями) ? -- если исчислим, и ожидаемо мал -- нельзя ли инвертировать NOT IN () в "=ANY(ARRAY(SELECT f_keys FROM blahblah EXCEPT ... FROM road_delnodes.))" ? -- если можно -- то нет ли возможности составной btree_gist индекс поюзать ? набор исчислим - до 1000 записей, примерно не смог разобрать - инвертировать NOT IN () в "=ANY(ARRAY( SELECT f_keys FROM blahblah EXCEPT ... FROM road_delnodes .))" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 16:47 |
|
||
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukдля road_deledges и для road_delnodes 1) road_deledges и road_delnodes - временные таблицы что за analyze к ним сделать? 2) по производительности - хотелось бы по максимуму. Спасибо за помощь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 16:54 |
|
||
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
pcadviser, Код: sql 1. PS скорее всего от скана вы не избавитесь. Т.ч. все про "не разобрал" -- не важно. А обегание возврата внутри С не в ваших руках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 18:10 |
|
||
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Добрый день! с упрощением такого запроса кто нибудь может помочь? SELECT case when orders.operator_comment LIKE '%#dostavleno%' THEN 'ДОСТАВЛЕН ТО' when warehouse1.name = warehouse.name THEN 'ЛЕЖИТ НА ТТ' ELSE 'НЕ ДОСТАВЛЕН' end, case when orders.delivery_method=1 or orders.delivery_method=4 THEN '' when orders.delivery_method=2 THEN warehouse.name ELSE 'Кто тут у нас?' end, case when orders.operator_comment LIKE '%#grandgotov%' and orders.operator_comment LIKE '%#megagotov%' THEN 'ОБА_ГОТОВЫ_АА' when orders.operator_comment LIKE '%#astmelomangotov%' and orders.operator_comment LIKE '%#astmarwingotov%' THEN 'ОБА_ГОТОВЫ_АС' when orders.operator_comment LIKE '%#damn%' THEN 'НЕТ_ТОВАРА' when orders.operator_comment LIKE '%#grandgotov%' THEN 'ГРАНД_СОБРАЛ' when orders.operator_comment LIKE '%#megagotov%' THEN 'МЕГА_СОБРАЛ' when orders.operator_comment LIKE '%#astmelomangotov%' THEN 'АСТ_МЕГА_СОБРАЛ' when orders.operator_comment LIKE '%##astmarwingotov%' THEN 'АСТ_МАРВИН_СОБРАЛ' ELSE 'НЕГОТОВ' end, extract(year from orders.order_date) as year, extract(month from orders.order_date) as month, extract(hour from orders.order_date) as hour, extract(week from orders.order_date) as week, date(orders.order_date), orders.order_id, orders.customer_surname, orders.points_spent, orders.bonus_points, orders.customer_name, orders.customer_secondname, orders.customer_phone, orders.customer_mobile, orders.customer_email, orders.delivery_region, orders.delivery_city, orders.delivery_microdistrict, orders.delivery_street, orders.delivery_house, orders.delivery_apartment, orders.delivery_zip_code, orders.delivery_comment, orders.retail_outlet_name, orders.retail_outlet_address, orders.retail_outlet_phone, orders.retail_outlet_email, orders.retail_outlet_warehouse_token, (orders.delivery_cost+orders.order_cost) as itog, orders.ic, orders.delivery_method_description, orders.delivery_date, orders.delivery_time_of_day, orders.delivery_cost, orders.order_cost, orders.order_date, shipment.warehouse_token, item.name_eshop, item.id_ax, item.name_ax, item.category, item.price, item.quantity, delivery_methods.caption, order_conditions.caption, order_states.caption, orders.responsible, warehouse1.name, warehouse.name, payment_methods.caption, action_journal_goods_item_shipment_state.action_comment FROM imm.orders INNER JOIN imm.item ON (orders.order_id = item.order_id) INNER JOIN dictionaries.delivery_methods ON (orders.delivery_method = delivery_methods.id) INNER JOIN dictionaries.order_conditions ON (orders.order_condition = order_conditions.id) INNER JOIN dictionaries.order_states ON (orders.order_state = order_states.id) INNER JOIN dictionaries.payment_methods ON(orders.payment_method = payment_methods.id), imm.shipment LEFT JOIN imm.action_journal_goods_item_shipment_state j ON j.id=(select max(id) from imm.action_journal_goods_item_shipment_state where reference_id = shipment.id), imm.warehouse warehouse1, imm.warehouse, imm.action_journal_goods_item_shipment_state WHERE item.id = shipment.order_goods_item_id AND warehouse1.token = shipment.warehouse_token AND warehouse.token = orders.retail_outlet_warehouse_token and orders.order_date > '2015-11-16' and orders.delivery_comment like '%expressdelivery%' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2015, 06:51 |
|
||
|
оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Pan_Alaverdy, 0. шагом марш новую тему на форуме: http://www.sql.ru/forum/actualpost.aspx?bid=7 создавать. Хватит наверх мусор 100летней давности поднимать. Тебе ответят все те же люди. 1. explain (запрос)? Причем отформатированный с сохранением пробелов (юзай тег src) 2. таблицы и индексы по ним? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 23:54 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38933251&tid=1997574]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 447ms |

| 0 / 0 |
