2
を選択:は、一つは、同じ2つのより遅い作品を登録しよう私はこのクエリを持って
SELECT *
FROM placex AS place
WHERE ST_DWithin(geometry, (SELECT geometry FROM placex WHERE place_id = 412369), 300)
AND name->'name' = (SELECT name->'name' FROM placex WHERE place_id = 412369)
リードタイム:530-650ms
このクエリを使用し2つのSELECT、それは醜いだと私は加入を使って書き直したいです。しかし、このクエリ:
SELECT same.*
FROM placex AS same
JOIN placex AS place ON place.place_id = 412369
WHERE ST_DWithin(same.geometry, place.geometry, 300)
AND same.name->'name' = place.name->'name';
2.8secで行われます。すべてのインデックスがデフォルトで表示されます(Nominatimによる)。 2番目のクエリを最適化する方法最初に使用しても大丈夫ですか?
のPostgreSQL 9.6.4、PostGISの2.3.3 r15473
http://wiki.postgresql.org/wiki/Slo –
EXPLAIN(ANALYZE、BUFFERS)へのリンクを追加してください –
'EXPLAIN ANALYZE'の出力を見れば、それらは同等のクエリではありません。 JOINバージョンは25行を生成し、サブ選択バージョンは1を生成します。 – eurotrash