私のサーバーでこのクエリを実行すると、非常に遅くなり、理由がわかりません。誰かが私がそれを理解するのを手伝ってもらえますか?
クエリ:
SELECT
"t_dat"."t_year" AS "c0",
"t_dat"."t_month" AS "c1",
"t_dat"."t_week" AS "c2",
"t_dat"."t_day" AS "c3",
"t_purs"."p_id" AS "c4",
sum("t_purs"."days") AS "m0",
sum("t_purs"."timecreated") AS "m1"
FROM "t_dat", "t_purs"
WHERE "t_purs"."created" = "t_dat"."t_key"
AND "t_dat"."t_year" = 2013
AND "t_dat"."t_month" = 3
AND "t_dat"."t_week" = 9
AND "t_dat"."t_day" IN (1,2)
AND "t_purs"."p_id" IN (
'4','15','18','19','20','29',
'31','35','46','56','72','78')
GROUP BY
"t_dat"."t_year",
"t_dat"."t_month",
"t_dat"."t_week",
"t_dat"."t_day",
"t_purs"."p_id"
分析の説明:
HashAggregate(cost = 12252.04..12252.04 rows = 1 width = 28)(actualtime = 10212.374..10212.384 rows = 10 loops = 1) ->ネストされたループ(コスト=0.00..12252.03行=1幅=28)(実際の時間=3016.006..10212.249行=14ループ=1) 参加フィルター:(t_dat.t_key = t_purs.created) -> t_datでのシーケンススキャン(コスト=0.00..129.90行=1幅=20)(実際の時間=0.745..2.040行=48ループ=1) フィルタ:((t_day = ANY('{1,2}' :: integer []))AND(t_year = 2013)AND(t_month = 3)AND(t_week = 9)) -> t_pursでのシーケンススキャン(コスト=0.00..12087.49行=9900幅=16)(実際の時間=0.018..201.630行=14014ループ=48) フィルタ:(p_id = ANY('{4,15,18,19,20,29,31,35,46,56,72,78}' :: integer [])) 合計実行時間:10212.470ミリ秒