タイトルの通りpostgresからデータを取得する時間を短縮したいです。
テーブルには550万件ほどデータが格納されております。
日付の範囲を指定してデータを取ってくる処理をしているのですが、その応答時間が25秒ほどかかってしまいます。
SQL自体はシンプルですし、インデックスも作成していてテーブルの設定、プログラム、SQLの見直し程度ではこれ以上早くできないのではないかと思っております。
postgres自体の設定、OS、ハードウェアなどについては、すでに動いているシステムなので変更することが出来ない状況です。
以下にテーブルの構成、SQL文、実行計画を載せます。
申し訳ございませんがどなたかアドバイスを頂ければと思います。
※テーブル構成 テーブル名=「details_table」
response_time timestamp
AA_id varchar
port varchar
octets numeric
※SQL
SELECT
response_time
, octets
FROM
details_table
WHERE
AA_id = '0001'
AND port = '2110'
AND response_time BETWEEN '2015/10/20 18:24:32.562' AND '2016/10/20 18:24:32.562'
ORDER BY
response_time desc
※実行計画
Index Scan Backward using pk_details_table on details_tablel
(cost=0.56..118147.59 rows=1982 width=11)
Index Cond: ((response_time >= '2015-10-20 18:24:32.562+09'::timestamp with time zone) AND (response_time <= '2016-10-20 18:24:32.562+09'::timestamp with time zone) AND ((AA_id)::text = '0001'::text) AND ((port)::text = '2110'::text))
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/19 06:17