ПОЯСНИТЕ (БУФЕР, АНАЛИЗ), понимая
Я использую PostgreSQL 9.3 Может кто-нибудь помочь мне, что я могу сделать, чтобы улучшить это. Максимальное количество записей в таблице БД составляет от 5000 до 7000, варьируется ежедневно. Параметр shared_buffers в БД PGsql равен 1 ГБ. что здесь не так. Мой запрос о / п
EXPLAIN (BUFFERS,ANALYZE)
select sd.customer_id, ch.charge_trx_id, ch.updated_date, ch.command_tx_id, ch.mvno_id,
ch.customer_id, ch.extra_plan_id, ch.base_plan_id, ch.old_base_plan_id, ch.volume,
ch.price, ch.charge_type, ch.remarks
from charge_history ch,
subscriber_data sd
where sd.customer_id = ch.customer_id
and ch.updated_date::date = (CURRENT_DATE - integer '1')
and ch.picked_status = 'NOTPICKED';
план:
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=0.85..10873.44 rows=75 width=271) (actual time=0.123..51.515 rows=3982 loops=1)
Buffers: shared hit=18475 read=55682
-> Index Scan using idx_chrghist_picked_status on charge_history (cost=0.42..10239.13 rows=75 width=255) (actual time=0.092..16.022 rows=3982 loops=1)
Index Cond: (picked_status = 'NOTPICKED'::text)
Filter: ((updated_date)::date = (('now'::cstring)::date - 1))
Rows Removed by Filter: 10022
Buffers: shared hit=2547 read=55682
-> Index Scan using "CUSTOMERID" on subscriber_data (cost=0.43..8.45 rows=1 width=36) (actual time=0.008..0.008 rows=1 loops=3982)
Index Cond: ((customer_id)::text = (charge_history.customer_id)::text)
Buffers: shared hit=15928
Total runtime: 52.053 ms
(11 rows)