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

MS SQL Server Discussion :

Choix index different suivant Personal ou std Edition


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Choix index different suivant Personal ou std Edition
    Bonjour,

    J'ai un resultat different dans le choix d'index avec la meme application, mais 2 serveurs de version Sql differents:
    Avec une requete
    SELECT * FROM MaTable
    WHERE Col1 >= 83 AND Col2 >= 'AAA'

    Pour Matable=(Pk int, Col1 int, Col2 Varchar), Index Pk_Index unique clustered, et sur (Col1,Col2):Col1Col2_Index unique, non clustered

    J'ai 2 serveurs En SqlServer 2000 :

    ->Sur le Serveur Personnal édition :
    Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
    Cette requete utilise bien l'index Col1Col2_Index et renvoie le resultat dans le bon ordre....

    MAIS ...

    ->Sur le Serveur standard édition :
    Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
    Cette requete utilise bien l'index de Pk Pk_Index !!

    Ce qui fausse les résultat

    J'ai verifié les parametres/proprietés du serveur, de la base et de la table depuis le query analyser, ils sont identiques. A priori je ne peux pas modifier/Forcer l'index car la requete est generée automatiquement. Pourquoi l'optimiseur de requete ne choisi t il pas le meme index dans les 2 cas ?

    Quelqu'un a une idée de cette difference ?

    Cordialement
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour cchris34,

    l'optimiseur de requêtes se base sur les statistiques de distribution de données pour choisir tel ou tel index.
    Avec ces statistiques, s'il calcule que le nombre de lignes que va ramener ton SELECT est proche du nombre total de lignes de ta table, alors il choisira de parcourir l'index de clé primaire, parce que cela lui prendra moins de temps.

    En revanche, si l'optimiseur de requêtes calcule que le nombre de lignes que va ramener ton SELECT est faible par rapport au nombre total de lignes de ta table, il choisira de parcourir l'index, puisque ça lui sera d'un moindre effort que de parcourir l'index de clé primaire.

    Est-ce que ces deux tables ont le même nombre de lignes et les mêmes indexes ? Regarde le plan de requête sur les deux serveurs, à mon avis tu trouveras d'où vient la différence

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour, justement c'est là où ca se corse c'est que le nombre de ligne est identiques sur l'un comme sur l'autre. Le Select est de type "Select TOP 1 * FROM ..." et effectivement si je retire le * et je met quelques colonnes, le bon index est selectionné.
    J'aurais besoin de forcer l'optimiseur de requete à toujours utiliser l'index le plus proche qui est dabs la clause Where et cela au niveau general (serveur ou base de donnée).

    Cordialement

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/06/2009, 16h11
  2. chargement de page different suivant la quantité de données envoyée
    Par tiyo33 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/04/2009, 10h49
  3. <select> qui affiche des input different suivant la selection
    Par cirvent dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/10/2008, 18h52
  4. etat acces : texte different suivant valeur
    Par Baba75AB dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/09/2008, 17h51
  5. Choix de couleur suivant la valeur
    Par CélineM dans le forum Webi
    Réponses: 5
    Dernier message: 08/06/2007, 10h18

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