Maison >base de données >tutoriel mysql >Comment fonctionne la comparaison par ligne de la clause SQL WHERE `(col1, col2) < (val1, val2)` ?

Comment fonctionne la comparaison par ligne de la clause SQL WHERE `(col1, col2) < (val1, val2)` ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-10 08:07:41582parcourir

How Does the SQL WHERE Clause's Row-Wise Comparison `(col1, col2) < (val1, val2)` Work?

Comparaisons par lignes de la clause SQL WHERE : compréhension (col1, col2) < (val1, val2)

L'expression SQL (col1, col2) < (val1, val2) dans une clause WHERE effectue une comparaison par ligne. Cela signifie :

  • col1 est comparé à val1. Si col1 est inférieur à val1, la condition entière est vraie.
  • Si col1 est égal à val1, alors col2 est comparé à val2. La condition n'est vraie que si col2 est inférieur à val2.

Terminologie

Ce type de comparaison est souvent appelé :

  • Comparaison des valeurs de ligne
  • Comparaison des constructeurs de lignes
  • Comparaison par ligne

Applications

Un cas d'utilisation courant de cette syntaxe est la « pagination des jeux de clés », une méthode efficace pour récupérer des sous-ensembles de données à partir d'une table de base de données.

Support de base de données

PostgreSQL se distingue parmi les principaux systèmes de gestion de bases de données relationnelles (SGBDR) par sa prise en charge complète des comparaisons par ligne, y compris l'utilisation complète de l'index.

Syntaxe concise de PostgreSQL

Dans PostgreSQL, (col1, col2) < (val1, val2) est le moyen standard et le plus efficace d'exprimer cette comparaison.

Forme équivalente plus longue

La comparaison par ligne est fonctionnellement équivalente à une expression plus complexe et moins efficace :

<code class="language-sql">(col1 < val1) OR (col1 = val1 AND col2 < val2)</code>

Prise en charge des index multi-colonnes (PostgreSQL)

PostgreSQL peut exploiter des index multi-colonnes sur (col1, col2) ou (col1 DESC, col2 DESC) pour optimiser les comparaisons par ligne. Notez que les index avec des colonnes mixtes ascendantes et descendantes (par exemple, (col1 ASC, col2 DESC)) ne sont pas pris en charge pour ce type de comparaison.

Différence par rapport à la condition ET

Il est crucial de distinguer la comparaison par ligne d'une condition ET logique :

<code class="language-sql">col1 < val1 AND col2 < val2</code>

La condition ET exige que les les deux inégalités soient vraies indépendamment. La comparaison par ligne n'évalue la deuxième condition que si la première est vraie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn