Il y a des années, il était courant d'écrire
where exists (Select * from some_table where some_condition)
L'année dernière, j'ai remarqué que de nombreux scripts t-sql sont passés à l'utilisation du numéro 1 au lieu de l'étoile
where exists (Select 1 from some_table where some_condition)
juste SO donc j'ai vu cet exemple Oracle
WHERE EXISTS (SELECT NULL FROM ...
Est-ce un modèle courant avec Oracle? Et quels sont les arguments de performance pour utiliser quelque chose comme ça.
oracle
sql-server
style
bernd_k
la source
la source
Réponses:
Réponse courte: j'espère que non!
Même l'
SELECT 1
idiome peut avoir survécu à son utilité, car les moteurs de base de données ont suffisamment avancé pour reconnaître que vous ne voulez pas vraiment les lignes, vous voulez juste savoir si les lignes existent. J'ai examiné les plans d'exécution dans SQL 2005 et les ai généralement réécrits comme des jointures, même là où ilsSELECT *
sont utilisés.la source
Dans Oracle, peu importe les performances. Vous pouvez même y mettre 1/0 et l'instruction ne renverra pas d'erreur de division par zéro car l'expression n'est pas évaluée.
la source