0
我有一個查詢,我正在處理一個屬性數組, [1,2,3,4]等。我需要檢查一個表,看看是否存在具有該ID的記錄,我對那些不存在的記錄感興趣,而不是那些記錄。SQL返回記錄的Id參數被發現不存在
目前我正在循環Ruby中的數組,然後爲每個請求單獨的SELECT請求。這是有效的,但通常這個數組非常長,而且看起來效率很低,從而導致許多單獨的請求。
我想知道是否有一種方法可以將整個數組傳遞給Postgres,然後Postgres將所有的ID都不存在。
感謝,
克里斯
在8.4或更高版本,它是一般最好使用'不EXISTS'而不是'不IN':'AS s(id)WHERE NOT EXISTS(SELECT * FROM my_table m WHERE m.id = s.id);'這通常會優化爲更快的大卷計劃,並且如果您有NULL陣列。 – kgrittn 2012-04-23 11:39:14
使用generate_series(1,5)作爲s'而不是unnest可能會更清晰....它可能表現更好。 – 2012-10-15 02:37:43