거의 1 백만 개의 행을 가진 상당히 큰 테이블을 가지고 있으며 쿼리 중 일부는 길이가 (1 분 이상)입니다. 여기이 SQL 쿼리를 Postgres에서 어떻게 최적화 할 수 있습니까?
그래서
EXPLAIN ANALYZE SELECT "apps".* FROM "apps" WHERE "apps"."kind" = 'software' ORDER BY itunes_release_date DESC, rating_count DESC LIMIT 12;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------
Limit (cost=153823.03..153823.03 rows=12 width=2091) (actual time=162681.166..162681.194 rows=12 loops=1)
-> Sort (cost=153823.03..154234.66 rows=823260 width=2091) (actual time=162681.159..162681.169 rows=12 loops=1)
Sort Key: itunes_release_date, rating_count
Sort Method: top-N heapsort Memory: 48kB
-> Seq Scan on apps (cost=0.00..150048.41 rows=823260 width=2091) (actual time=0.718..161561.149 rows=808554 loops=1)
Filter: (kind = 'software'::text)
Total runtime: 162682.143 ms
(7 rows)
, 내가 그걸 어떻게 최적화 것 ... 나에게 특히 힘든 시간을주고 하나? PG 버전은 9.2.4, FWIW입니다.
이미 kind
및 kind, itunes_release_date
에 대한 색인이 있습니다.
귀하의 질문에 대답하지 않지만 1 백만 개의 레코드가 있다면'software''와 같은'varchars'를 반복하지 말고'app'의 숫자 참조를 사용하여'app_kind' 테이블을 만드는 것이 좋습니다. –
@ LukasEder : 또는 기존 쿼리를 변경하지 않고 열거 형을 사용할 수 있습니다. –