sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL-syntaxterm för 'WHERE (col1, col2) <(val1, val2)'

Den vanliga kortsikten är bara "Radvärden" . Eller "Jämförelse av radvärden" för operationen du demonstrerar. Den funktionen har funnits i SQL-standarden sedan SQL-92 (!). Postgres är för närvarande det enda större RDBMS som stöder det i alla aspekter - speciellt även med optimalt indexstöd.

I synnerhet uttrycket (col1, col2) < (1, 2) är bara en förkortning för ROW(col1, col2) < ROW(1, 2) i Postgres.Uttrycket ROW(col1, col2) kallas också radkonstruktor - precis som ARRAY[col1, col2] är en array-konstruktor.

Det är lämpligen kort för det mer utförliga, ekvivalenta uttrycket:

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

... och Postgres kan använda ett index på (col1, col2) eller (col1 DESC, col2 DESC) för detta.

Och särskilt skild från (!)

col1 < 1 AND  AND col2 < 2

Tänk på ett exempel:(1,1) ...

Här är en presentation av Markus Winand som diskuterar funktionen för paginering i detalj:

"Paginering gjort på PostgreSQL-sättet" på use-the-index-luke.com.

Jämförelse av radvärden börjar på sidan 20. Stödmatrisen som jag har hänvisat till finns på sidan 45.

Jag är inte på något sätt ansluten till någon av de källor jag citerade.



  1. 4 sätt att lista alla vyer i MySQL

  2. SQL Server Performance TOP IO Query -2

  3. Hämta data från sql databse i flutter datewise?

  4. Om du kunde ställa alla frågor till MS Access-teamet, vad skulle det vara?