필자는 관계형 데이터베이스에 처음으로 익숙한 브랜드이며 대규모 (기존) 데이터베이스를 쿼리하기위한 기본 작업 환경을 설정하는 데 도움이 필요합니다. 필자는 PGAdmin을 통해 원격 서버에 연결했지만 모든 기본 쿼리는 매우 느립니다.초급 PostgreSQL : 대규모 기존 데이터베이스를 쿼리하기위한 환경 설정
쿼리
SELECT to_char(created, 'YYYY-MM-DD'), user_id
FROM transactions
WHERE type = 'purchase'
AND created > NOW() AT TIME ZONE 'US/Mountain' - INTERVAL '1 month'
ORDER BY created;
EXPLAIN(BUFFERS, ANALYZE)
출력 :
Index Scan using payments_transaction_created_42e34d6ca1e04ffe_uniq
on payments_transaction (cost=0.44..339376.18 rows=481811 width=24) (actual time=2.643..49422.733 rows=511058 loops=1)
Index Cond: (created > (timezone('US/Mountain'::text, now()) - '1 mon'::interval))
Filter: ((type)::text = 'purchase'::text)
Rows Removed by Filter: 955691
Buffers: shared hit=405597 read=295625 written=764
Planning time: 0.111 ms
Execution time: 49569.324 ms
, 실행 시간은 나에게 너무 긴 것 같다.
가능한 가장 효율적인 환경을 만들기 위해 어떤 단계를 밟아야합니까? 데이터베이스의 로컬 복사본을 만드는 것이 더 빠른 쿼리를 의미합니까? 그러한 비효율을 초래할 수있는 다른 요소가 있습니까?
나는 데이터베이스에 새로운 것이므로 너무 단순한 대답이 없음을 기억하십시오.
https://stackoverflow.com/tags/postgresql-performance/info 다음 질문을 읽고 [편집] 누락 된 정보를 추가하십시오. 특히 쿼리에 대해 [explain (analyze, verbose)'] (https://www.postgresql.org/docs/current/static/sql-explain.html)의 출력을 게시하십시오. –
@a_horse_with_no_name 팁에 감사드립니다. 게시물을 업데이트했습니다. 도움이 될만한 정보가 더 있다면 알려주십시오. – gidgicken