PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Termine della sintassi SQL per 'WHERE (col1, col2) <(val1, val2)'

Il breve termine comune è solo "Valori di riga" . Oppure "Confronto valore riga" per l'operazione che dimostri. Quella caratteristica è stata nello standard SQL da SQL-92 (!). Postgres è attualmente l'unico grande RDBMS che lo supporta in tutti gli aspetti, specialmente anche con un supporto ottimale dell'indice.

In particolare, l'espressione (col1, col2) < (1, 2) è solo un'abbreviazione per ROW(col1, col2) < ROW(1, 2) in Postgres.L'espressione ROW(col1, col2) è anche chiamato costruttore di riga, proprio come ARRAY[col1, col2] è un costruttore di array.

È convenientemente l'abbreviazione dell'espressione equivalente più dettagliata:

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

... e Postgres può usare un indice su (col1, col2) o (col1 DESC, col2 DESC) per questo.

E in particolare distinto da (!)

col1 < 1 AND  AND col2 < 2

Considera l'esempio:(1,1) ...

Ecco una presentazione di Markus Winand che discute in dettaglio la funzione per l'impaginazione:

"Impaginazione eseguita alla maniera PostgreSQL" su use-the-index-luke.com.

Il confronto dei valori di riga inizia a pagina 20. La matrice di supporto a cui ho fatto riferimento è a pagina 45.

Non sono in alcun modo affiliato a nessuna delle fonti che ho citato.