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

Requêtes MySQL Discussion :

Comment regler mes Indexes


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 26
    Points
    26
    Par défaut Comment regler mes Indexes
    Bonjour,
    Premièrement merci pour les liens, j'en avais déja visité quelque uns d'entre eux, mais un retour n'a pas fais de tord!
    Parcontre, il me reste qu'un point a comprendre au sujet de l'indexes. Voici un exemple qui aidera a comprendre mon questionnement :
    Table USERS
    • id (primary key) | username (varchar) | password (varchar) | statut (int) | incrit_le (datetime)
    J'interroge souvent ma table des 2 façons suivante :
    • select * from USERS where id=X
    • select * from USERS where username=X and password=Y
    Lorsque que crée mon indexes quel façon est a utiliser :
    Façon 1 :
    Name Fields Index Type Index Method
    users id/username/pasword Unique BTree

    façon 2 :
    Name Fields Index Type Index Method
    userId id Unique BTree
    login username/password Unique BTree

    Ou encore peut-être dois-je faire cela autrement? J'ai lu beaucoup sur le sujet, mais je ne comprends pas a 100% cette parti. Je sais qu'il y a un ''par la gauche'' mais je veux être sure de comment dois-je ''setter'' tout cela.
    Merci D'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par deuxk Voir le message
    Premièrement merci pour les liens
    De quels liens s'agit-il ?

    Avant de parler d'index il y a d'abord les contraintes.
    On peut raisonnablement imaginer que id est la clé primaire (auto-incrémentée) de la table.
    Elle se retrouve donc indexée automatiquement par le SGBD.
    Une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from USERS where id=X
    utilisera l'index de la clé primaire pour accéder à cette unique ligne.

    Par ailleurs, le username servant à se connecter se doit également d'être unique (2 utilisateurs ne peuvent avoir le même identifiant).
    Il est donc nécessaire de placer une contrainte d'unicité sur le username, ce qui impliquera la création automatique d'un index unique sur la colonne par le SGBD (si aucun index existant n'est disponible).

    Une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from USERS where username=X and password=Y
    utilisera l'index unique créé sur username pour ne renvoyer qu'une ligne (ou aucune si le mdp fourni n'est pas correct)

    Une contrainte d'unicité sur le couple username/pwd n'est à priori pas correcte fonctionnellement (sur DVP ça voudrait dire que plusieurs deuxk existeraient tant qu'ils ont des mdp différents...)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Merci pour les reseignements!

    Pour être sûre qu'on ce comprends bien moi je parles d'indexer ma table, pas une table d'index

    Mais dans le cas de jointure, je me demande comment devrais-je faire mes indexes :

    Voici 2 tables d'exemple :

    tables USERS : id(PrimaryKey), username, password, ...
    tables ADDRESS : userId, address, ville, province, pays

    si je fais souvent cette demande :

    SELECT * FROM USERS LEFT OUTER JOIN ADDRESS ON USERS.id = ADDRESS.userId WHERE USERS.id = X

    Est-ce que je dois indexes la table ADDRESS de la façon suivante :
    nom: userId
    fields: userId
    type: unique
    Method:BTree

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Citation Envoyé par deuxk Voir le message
    pas une table d'index
    ca tombe bien bien cela n'existe pas.


    lisez ceci http://sqlpro.developpez.com/cours/quoi-indexer/

Discussions similaires

  1. Comment rebuilder mes index
    Par lucazzo dans le forum Oracle
    Réponses: 2
    Dernier message: 02/11/2009, 23h24
  2. Réponses: 7
    Dernier message: 21/10/2004, 09h13
  3. [SQLClientDataSet] comment definir un index ?
    Par kase74 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/09/2004, 14h14
  4. Comment déplacé un index de tablespace?
    Par superfly dans le forum Administration
    Réponses: 4
    Dernier message: 10/08/2004, 13h56
  5. Comment récupérer l'index du dernier élément inséré ?
    Par Didier100 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 22h41

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