Maison >base de données >tutoriel mysql >Comment SQL gère-t-il les comparaisons de valeurs de ligne dans les clauses WHERE ?
Une explication détaillée des valeurs de ligne en SQL
Dans la clause WHERE de SQL, les valeurs de ligne sont souvent comparées, comme (col1, col2) < (val1, val2)
. Cet article approfondira la syntaxe et les fonctionnalités de cette comparaison de valeurs de ligne, ainsi que son application dans les requêtes de base de données.
Concepts de base
(col1, col2)
pour effectuer une comparaison des valeurs de ligne. Cette syntaxe est souvent utilisée dans la « pagination des jeux de clés » pour récupérer des enregistrements de données avant ou après une ligne spécifique.
Syntaxe et fonctionnalité
L'expression (col1, col2) < (val1, val2)
signifie : si col1 < val1
, l'expression est vraie ; si col1 = val1
et col2 < val2
, l'expression est également vraie sinon, elle est fausse ;
Ceci est différent de l'expression équivalente plus verbeuse :
<code class="language-sql">(col1 < val1) OR (col1 = val1 AND col2 < val2)</code>
PostgreSQL peut exploiter des index multi-colonnes sur (col1, col2)
ou (col1 DESC, col2 DESC)
pour optimiser ces requêtes. Notez que la comparaison des valeurs de ligne n'est pas la même chose que :
<code class="language-sql">col1 < val1 AND col2 < val2</code>
La différence est évidente lorsque l'on considère les valeurs de ligne comme (1,1)
.
Plus de ressources
Pour plus d'informations, veuillez vous référer à la présentation de Markus Winand, "The Correct Way to Paginate in PostgreSQL" :
La bonne façon de paginer dans PostgreSQL
La comparaison des valeurs de ligne est abordée à la page 20 et la matrice de support est fournie à la page 45.
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!