Maison >base de données >tutoriel mysql >Sous-requêtes EXISTS : SELECT 1 ou SELECT * – Est-ce important pour les performances ?

Sous-requêtes EXISTS : SELECT 1 ou SELECT * – Est-ce important pour les performances ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 20:38:13320parcourir

EXISTS Subqueries: SELECT 1 or SELECT * – Does it Matter for Performance?

*Sous-requête EXISTS : SELECT 1 contre SELECT **

Lors de l'utilisation de la sous-requête EXISTS en SQL, une question courante est la suivante : SELECT 1 ou SELECT * doit-il être utilisé dans la sous-requête ?

*SELECT contre SELECT 1**

Dans le passé, on pensait que SELECT 1 était plus efficace que SELECT * dans la sous-requête EXISTS. Cependant, ce n’est pas le cas. SQL Server optimise la vérification EXISTS pour renvoyer AUCUNE DONNÉE au système quelles que soient les colonnes spécifiées dans la liste SELECT de la sous-requête.

Le point de vue de Microsoft

Selon Microsoft : "La liste SELECT d'une sous-requête introduite par EXISTS contient presque toujours un astérisque (*). Il n'y a aucune raison de lister les noms de colonnes, puisque vous testez simplement s'il existe des lignes qui satisfont aux conditions spécifiées dans la sous-requête ”

Démo

Pour vérifier cela, considérez la requête suivante :

<code class="language-sql">SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable 
WHERE a_valid_clause )</code>

Si SELECT * effectue réellement une opération sur les colonnes sélectionnées, la requête entraînera une erreur de division par zéro. Cependant, ce n'est pas le cas, ce qui indique que la liste SELECT de la sous-requête est ignorée et utilisée uniquement pour déterminer l'existence de la ligne.

Standard SQL

Le standard

SQL prend également en charge cette vue : "Si '' est contenu uniquement dans une qui est directement contenue dans un prédicat , alors '' est équivalent à un A pour tout

Conclusion

En résumé, il n'y a aucune différence de performances en utilisant SELECT 1 ou SELECT * dans la sous-requête EXISTS. Par conséquent, il est recommandé quelle option est la plus lisible ou la plus cohérente avec votre style de codage.

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