SQL WHERE 子句逐行比較:理解 (col1, col2) < (val1, val2)
WHERE 子句中的 SQL 表達式 (col1, col2) < (val1, val2)
執行逐行比較。 這意味著:
col1
與 val1
比較。如果 col1
小於 val1
,則整個條件為真。 col1
等於 val1
,則將 col2
與 val2
比較。 只有當 col2
小於 val2
時,條件才成立。 術語
這種類型的比較通常稱為:
應用
此語法的一個常見用例是“鍵集分頁”,這是一種從資料庫表中檢索資料子集的有效方法。
資料庫支援
PostgreSQL 在主要關聯式資料庫管理系統 (RDBMS) 中脫穎而出,因為它全面支援行比較,包括完整的索引利用。
PostgreSQL 簡潔語法
在 PostgreSQL 中,(col1, col2) < (val1, val2)
是表達這種比較的標準且最有效的方式。
等效較長形式
逐行比較在功能上等同於較複雜、效率較低的表達式:
<code class="language-sql">(col1 < val1) OR (col1 = val1 AND col2 < val2)</code>
多列索引支援 (PostgreSQL)
PostgreSQL 可以利用 (col1, col2)
或 (col1 DESC, col2 DESC)
上的多列索引來最佳化按行比較。 請注意,這種類型的比較不支援具有混合升序和降序列的索引(例如 (col1 ASC, col2 DESC)
)。
與 AND 條件的差異
區分行比較和邏輯 AND 條件至關重要:
<code class="language-sql">col1 < val1 AND col2 < val2</code>
AND 條件要求兩個 不等式獨立成立。 如果第一個條件為真,則逐行比較僅評估第二個條件。
以上是SQL WHERE 子句的按行比較 `(col1, col2) < (val1, val2)` 如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!