0
執行多個SQL SELECT查詢我使用的PostGIS擴展PostgreSQL和具有表是這樣的:如何批量
CREATE TABLE areas
(
id integer NOT NULL DEFAULT nextval('areas_id_seq'::regclass),
name character varying(1024) NOT NULL,
shape geometry NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
我的應用程序接收多個座標點(緯度/經度對),並針對每一個點,我需要找到相應的區域。因此SQL單點看起來像
SELECT id, name FROM areas WHERE ST_Within(shape, ST_MakePoint(lng, lat));
但我需要執行此查詢幾點。我可以爲每個點執行單獨的查詢,但我想應該有一種方法來實現它與單個查詢。
當然,我可以在這裏使用UNION但:
- 據我瞭解與UNION團結N次查詢比單獨N次查詢
- 像我在輸入3點並不快,我結合3結果選擇並得到2個區域。我需要了解哪個點與哪個點對應(以及哪個點沒有關聯區域),這意味着我需要在我的代碼中執行此操作(如果有3000個點而不是3個點,則可能會很長),即使PostGIS已經完成所有檢查。
我認爲可以創建臨時表,將輸入點放在那裏,然後爲兩個表執行JOIN select。但可能有更好的方法。
所以問題是:在PostgreSQL(或任何其他RDBMS)中,對於N個輸入值,更快的方式執行相同的查詢並以與輸入值相同的順序獲得確切的N個結果(假設對於某些輸入值,結果將爲NULL )?