4
空間関数による行の制限
以下のクエリのパフォーマンスを改善しようとしています。クエリ(FROM句のサブクエリ、WHERE句のサブクエリ)をどのように記述しても、countery = 24の行が60行しかないにもかかわらず、高価なST_DWITHIN関数ですべての570K行を実行するように要求します。postgresにcounty = 24でフィルターをかけるようにするには、postgis funcを実行する前にどのようにすればよいですか?700msはあまり心配する必要はありませんが、このテーブルが1,000万回以上になると、パフォーマンスが心配になります。 また、p.idは主キー、p.zipcodeはfkインデックス、z.countyはfkインデックス、p.geomはGiSTインデックスです。 クエリ: EXPLAIN ANALYZE SELECT count(p.id) FROM point AS p LEFT JOIN zipcode AS z ON p.zipcode = z.zipcode WHERE z.county = 24 AND ST_DWithin( p.geom, ST_SetSRID(ST_Point(-121.479756008715,38.563236291512),4269), 16090.0, false ) 分析の説明: Aggregate (cost=250851.91..250851.92 rows=1 width=4) (actual time=724.007..724.007 rows=1 loops=1) -> Hash Join (cost=152.05..250851.34 rows=228 …