PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL-Syntaxbegriff für 'WHERE (col1, col2) <(val1, val2)'

Der übliche Kurzbegriff ist einfach "Zeilenwerte" . Oder "Zeilenwertvergleich" für die Operation, die Sie demonstrieren. Diese Funktion ist seit SQL-92 (!) im SQL-Standard enthalten. Postgres ist derzeit das einzige große RDBMS, das es in allen Aspekten unterstützt - insbesondere auch mit optimaler Indexunterstützung.

Insbesondere der Ausdruck (col1, col2) < (1, 2) ist nur eine Abkürzung für ROW(col1, col2) < ROW(1, 2) in Postgres. Der Ausdruck ROW(col1, col2) wird auch Zeilenkonstruktor genannt - genau wie ARRAY[col1, col2] ist ein Array-Konstruktor.

Es ist eine bequeme Abkürzung für den ausführlicheren, äquivalenten Ausdruck:

col1 < 1 OR (col1 = 1 AND col2 < 2)

... und Postgres kann einen Index auf (col1, col2) verwenden oder (col1 DESC, col2 DESC) dafür.

Und deutlich anders als (!)

col1 < 1 AND  AND col2 < 2

Betrachten Sie das Beispiel:(1,1) ...

Hier ist eine Präsentation von Markus Winand, die das Feature für Paginierung im Detail bespricht:

„Paginierung auf PostgreSQL-Weise“ auf use-the-index-luke.com.

Der Zeilenwertvergleich beginnt auf Seite 20. Die Unterstützungsmatrix, auf die ich mich bezog, befindet sich auf Seite 45.

Ich bin in keiner Weise mit einer der von mir zitierten Quellen verbunden.