Maison >base de données >tutoriel mysql >Comment fonctionne la comparaison par ligne de la clause SQL WHERE `(col1, col2) < (val1, val2)` ?
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.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é :
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!