IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Question à propos de l'opérateur EXISTS [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Question à propos de l'opérateur EXISTS
    Bonjour,

    Je me pose une petite question sur l'opérateur EXISTS.

    Il est conseillé, pour cet opérateur, d'utiliser des requêtes du genre SELECT * FROM T WHERE X = Y.

    Je me demandais dans quelle mesure les performances sont impactées lorsque la requête en question porte sur une table à forte volumétrie et pour laquelle le filtre ne porterait pas sur un index (ou ne serait pas sargeable) ?

    Si les performances sont impactées et étant donné qu'il ne suffit que d'une ligne pour que EXISTS soit vrai, l'utilisation de TOP 1 m'est venue à l'esprit ?

    Est-ce une bonne idée ?

    Merci d'avance.
    Kropernic

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Le moteur se charge de cette optimisation ! dans le cas d'un IF [NOT] EXISTS, il cherche uniquement à "savoir" s'il existe au moins une ligne.

    C'est la raison pour laquelle il est conseillé de faire un SELECT * voire SELECT 1. Ainsi, le moteur pourra même utiliser n'importe quel index sur la table qui pourrait répondre au mieux, puisque le contenu des colonnes n'importe pas : c'est uniquement l'existence de ligne que l'on cherche.

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Je me disais aussi que cela devait être géré mais bon, je préférais demander.

    Merci
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Question à propos de l'opérateur "OR" (comme dans "or die")
    Par bastountan dans le forum Langage
    Réponses: 15
    Dernier message: 31/03/2011, 13h38
  2. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  3. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  4. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo