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 :

Clé primaire avec le sens du tri


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut Clé primaire avec le sens du tri
    Bonjour,

    je me pose des questions par rapport à la création de la clé primaire dans cet exemple (pour SQL Server):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE TABLE dbo.TEST(
    	COL1 varchar(10) NOT NULL,
    	COL2 varchar(5) NOT NULL,
    	COL3 varchar(8) NOT NULL,
    	COL4 varchar(10) NOT NULL,
    	COL5 numeric(12, 4) NULL,
    	COL6 datetime NULL DEFAULT (getdate()),
    	CONSTRAINT PK_TEST PRIMARY KEY CLUSTERED 
    	(
    	COL1 ASC,
    	COL2 ASC,
    	COL3 ASC
    	)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    Il me semble que lorsqu'on créer une clé primaire, un index est automatiquement créé. J'ai l'impression ici qu'il y a un mélange entre la création de la clé primaire et la création de l'index correspondant, puisque l'on précise le sens du tri de l'index (ASC).

    Le fait de préciser ASC permet-il de paramétrer l'index qui sera créé automatiquement ? Ou alors cela permet-il de faire autre chose que je ne vois pas ?
    Quelques explications sont la bienvenue sur cette syntaxe.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    J'ai l'impression ici qu'il y a un mélange entre la création de la clé primaire et la création de l'index correspondant, puisque l'on précise le sens du tri de l'index (ASC).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    CONSTRAINT PK_TEST PRIMARY KEY CLUSTERED 
    (
     COL1 ASC,
     COL2 ASC,
     COL3 ASC
    )
    ...

    L'instruction ci dessus vous permet de créer une clé primaire qui implique la création d'un index unique. De plus l'option CLUSTERED (qui est ici redondante car par défaut une clé primaire est de type cluster) permet de définir la nature de votre index unique. Il n'y a donc pas de confusion

    Le mot clé ASC ici permet de définir l'ordre de tri de votre index qui sera ordonné selon suivant les colonnes COL1, COL2 et COL3 par ordre croissant.

    ++

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Donc, pour être sur d'avoir bien compris. L'index sera créé même si je ne rajoute pas ASC ? Le fait de le mettre est juste une indication qui permet de préciser comment il doit être construit ?

  4. #4
    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,

    Le fait de le mettre est juste une indication qui permet de préciser comment il doit être construit ?
    Disons que votre phrase n'est pas tout à fait précise.
    Je dirai plutôt que cela permet de spécifier l'ordre de tri de la clé.
    Si par exemple la plupart de vos requêtes font un ORDER BY COL1, COL2, COL3 DESC, alors vous avez intérêt à mettre DESC dans la spécification.

    La façon dont l'index est construit est autre chose :
    - vous pouvez définir le taux de remplissage des pages de niveau feuille
    - vous pouvez vouloir le même pour les niveaux intermédiaires
    - vous pouvez effectuer le tri dans TempDB
    - ...

    @++

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Merci de vos réponses.

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

Discussions similaires

  1. [Sql]de clé primaire avec accès concurrents
    Par Guilmo1080 dans le forum Oracle
    Réponses: 3
    Dernier message: 04/08/2006, 16h38
  2. Clé primaire avec numéro séquentiel préfixé...
    Par Michelk12 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/03/2006, 15h44
  3. Probleme avec mon algorithme de tri
    Par kaygee dans le forum Langage
    Réponses: 6
    Dernier message: 09/01/2006, 21h23
  4. insertion d'une clé primaire avec un "d" apostroph
    Par imer5 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 18/05/2005, 14h51
  5. Modifier la surface primaire (avec un filtre)
    Par cemoi dans le forum DirectX
    Réponses: 56
    Dernier message: 01/01/2004, 20h48

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