PostgreSQL 的 IN 和 ANY 運算子:選擇哪一個?
PostgreSQL 提供了兩種結構,IN 和 ANY,常用於將值與集合進行比較。雖然這兩種結構的邏輯功能基本上相同(兩者都測試集合成員資格),但它們在語法和性能方面存在細微差異。
語法變體
IN 有兩種語法變體:
ANY 也具有兩種語法變體:
用例
效能注意事項
通常情況下,IN (集合) 和 ANY (集合) 的表現相似,如果可用,則使用索引掃描。但是,ANY (數組) 對數組使用順序掃描,對於大型數組來說,效率可能較低。
與 = ANY (集合) 的比較
雖然 IN (集合) 和 = ANY (集合) 在邏輯上是等效的,但在某些情況下,它們可能會導致不同的查詢計劃。使用 IN 會強制 PostgreSQL 為集合建立一個臨時表,這可能會增加開銷。
通用性
ANY 比 IN 更通用,因為它可以與各種運算符(不僅僅是 =)一起使用。例如,您可以將 ANY 與 LIKE 一起使用來檢查模式匹配。
排除
要找不在集合中的行,可以使用 NOT (列 = ANY (集合))。或者,您可以為此目的使用 ALL。
NULL 值
預設情況下,具有 NULL 值的行不會透過 IN 或 ANY 比較。若要包含 NULL 值,您可以將 IS NOT TRUE 與比較一起使用。
以上是PostgreSQL 中的 IN 與 ANY:您應該選擇哪個運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!