sql >> Database >  >> RDS >> PostgreSQL

SQL-syntaxisterm voor 'WHERE (col1, col2) <(val1, val2)'

De gebruikelijke korte termijn is gewoon 'Rijwaarden' . Of 'Rijwaardevergelijking' voor de operatie die u demonstreert. Die functie zit sinds SQL-92 (!) in de SQL-standaard. Postgres is momenteel het enige grote RDBMS dat het in alle aspecten ondersteunt - vooral ook met optimale indexondersteuning.

In het bijzonder de uitdrukking (col1, col2) < (1, 2) is gewoon een afkorting voor ROW(col1, col2) < ROW(1, 2) in Postgres.De uitdrukking ROW(col1, col2) wordt ook rijconstructor genoemd - net als ARRAY[col1, col2] is een array-constructor.

Het is een handige afkorting voor de meer uitgebreide, equivalente uitdrukking:

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

... en Postgres kan een index gebruiken op (col1, col2) of (col1 DESC, col2 DESC) hiervoor.

En met name verschillend van (!)

col1 < 1 AND  AND col2 < 2

Overweeg voorbeeld:(1,1) ...

Hier is een presentatie van Markus Winand die de functie voor paginering in detail bespreekt:

"Paginering gedaan op de PostgreSQL-manier" op use-the-index-luke.com.

Vergelijking van rijwaarden begint op pagina 20. De ondersteuningsmatrix waarnaar ik heb verwezen, staat op pagina 45.

Ik ben op geen enkele manier verbonden aan een van de bronnen die ik heb geciteerd.



  1. Hoe om te gaan met BOB-uitzonderingen

  2. Top Open Source-tools voor MySQL- en MariaDB-migraties

  3. Wordt de primaire sleutel automatisch geïndexeerd in MySQL?

  4. Leer databaseontwerp met SQL Server Management Studio (SSMS) - deel 2