PostgresデータベースのSELECTクエリの速度に関して問題があります。
キーとして2つの整数列を持つテーブルがあります:(int1、int2)このテーブルには約7000万行があります。
この環境で2種類の単純なSELECTクエリを作成する必要があります。
SELECT * FROM table WHERE int1=X;
SELECT * FROM table WHERE int2=X;
これらの2つの選択は、これらの7000万行のうちそれぞれ約10.000行を返します。これをできるだけ速く機能させるために、各列に1つずつ、合計2つのHASHインデックスを使用することを考えました。残念ながら、結果はそれほど良くありません。
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on lec_sim (cost=232.21..25054.38 rows=6565 width=36) (actual time=14.759..23339.545 rows=7871 loops=1)
Recheck Cond: (lec2_id = 11782)
-> Bitmap Index Scan on lec_sim_lec2_hash_ind (cost=0.00..230.56 rows=6565 width=0) (actual time=13.495..13.495 rows=7871 loops=1)
Index Cond: (lec2_id = 11782)
Total runtime: 23342.534 ms
(5 rows)
これは、これらのクエリの1つのEXPLAINANALYZEの例です。約23秒かかります。私の期待は、この情報を1秒以内に取得することです。
これらはpostgresdbconfigのいくつかのパラメーターです。
work_mem = 128MB
shared_buffers = 2GB
maintenance_work_mem = 512MB
fsync = off
synchronous_commit = off
effective_cache_size = 4GB
どんな助け、コメントまたは考えでも本当にありがたいです。
前もって感謝します。