Maison > base de données > tutoriel mysql > « SELECT 1 » offre-t-il des gains de performances par rapport à « SELECT * » dans les clauses SQL EXISTS ?

« SELECT 1 » offre-t-il des gains de performances par rapport à « SELECT * » dans les clauses SQL EXISTS ?

Linda Hamilton
Libérer: 2025-01-15 20:46:50
original
375 Les gens l'ont consulté

Does `SELECT 1` Offer Performance Gains over `SELECT *` in SQL EXISTS Clauses?

Optimisation des sous-requêtes dans la clause EXISTS

En programmation SQL, l'opérateur EXISTS vérifie si une sous-requête renvoie des lignes. Traditionnellement, les développeurs utilisaient la syntaxe SELECT * dans leur clause EXISTS. Cependant, certaines personnes recommandent d'utiliser SELECT 1 à la place, affirmant que cela améliore les performances.

Réponse :

Contrairement aux avantages revendiqués, Microsoft et le standard SQL déclarent qu'il n'y a aucun impact sur les performances de SELECT * dans la clause EXISTS. SQL Server reconnaîtra le contexte et ne renverra AUCUNE DONNÉE quelles que soient les colonnes spécifiées dans la liste de sélection.

Comparez et vérifiez :

Pour vérifier cela, considérez l'extrait de code suivant :

<code class="language-sql">IF EXISTS (SELECT 1/0
                 FROM someothertable 
                WHERE a_valid_clause )</code>
Copier après la connexion

Si la liste de sélection est significative, elle provoquera une erreur de division par zéro. Cependant, il s'exécute correctement car EXISTS ignore le jeu de résultats réel et vérifie uniquement l'existence de la ligne.

Conclusion :

Dans SQL Server, il n'y a aucune différence pratique entre l'utilisation de SELECT * ou SELECT 1 dans la clause EXISTS. Les deux méthodes sont efficaces pour vérifier la présence de lignes dans une sous-requête. Les développeurs peuvent choisir leur syntaxe préférée en fonction de leurs préférences personnelles ou de la lisibilité du code.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal