sql >> Base de Datos >  >> RDS >> PostgreSQL

Término de sintaxis SQL para 'WHERE (col1, col2) <(val1, val2)'

El término corto común es simplemente "Valores de fila" . O "Comparación de valor de fila" para la operación que demuestras. Esa característica ha estado en el estándar SQL desde SQL-92 (!). Postgres es actualmente el único RDBMS importante que lo admite en todos los aspectos, especialmente también con soporte de índice óptimo.

En particular, la expresión (col1, col2) < (1, 2) es solo una abreviatura de ROW(col1, col2) < ROW(1, 2) en Postgres. La expresión ROW(col1, col2) también se llama constructor de filas, al igual que ARRAY[col1, col2] es un constructor de matrices.

Es convenientemente la abreviatura de la expresión equivalente más detallada:

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

... y Postgres puede usar un índice en (col1, col2) o (col1 DESC, col2 DESC) por esto.

Y notablemente distinto de (!)

col1 < 1 AND  AND col2 < 2

Considere el ejemplo:(1,1) ...

Aquí hay una presentación de Markus Winand que analiza la función de paginación en detalle:

"Paginación realizada al estilo de PostgreSQL" en use-the-index-luke.com.

La comparación de valores de fila comienza en la página 20. La matriz de soporte a la que me he estado refiriendo está en la página 45.

De ninguna manera estoy afiliado a ninguna de las fuentes que cité.