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

SQL Procédural MySQL Discussion :

Utiliser des Index


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut Utiliser des Index
    Bonjour,

    J'ai un soucis avec des index.

    Il y a quelque temps, j'ai posé une question concernant les capacité de mysql et on m'a conseillé d'utiliser des index.

    En 2 mots, je suis en train de dev un site pour la boite ou je bosse. La l'entreprise est implantée sur toute la France en une centaine d'agences et chaque agence s'occupe de xx communes.

    J'ai donc une table avec toutes les communes de France (environ 7000). Cette table se nomme "commune" et il y a 3 champs:
    idCommune
    nomCommune
    idAgence

    Ensuite, j'ai une seconde table qui se nomme "agence" et dans laquelle j'ai 2 champs:
    idAgence
    nomAgence

    En fonction de l'utilisateur connecté à l'outil et en fonction de l'agence à laquelle il appartient, j'aimerai qu'il est accès uniquement au commune qui le concerne (dans des menu déroulant, etc, etc, etc)..

    Pour optimiser la chose, j'aimerai utiliser des index. J'ai cherché sur internet et j'ai effectivement trouvé des sites ou il était expliqué comment fonctionne les index mais je n'ai rien trouvé qui expliquait comment les créer (en sachant que je passe par phpMyAdmin)

    Sous phpMyAdmin j'ai vu qu'on pouvait déclarer un champ comme étant un index. Dans mon cas c'est le champs "idAgence" qui fait la relation entre les 2 table et c'est ce champs que je vais donc utiliser dans ma requête comme clause.

    Pour utiliser les index dans ce cas, est-ce qu'il suffit de déclarer les 2 champs "idAgence" de mes 2 tables comme étant des index ou y a t-il autre chose a faire?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Par défaut
    Cela suffit !!!
    Par contre en fonction du moteur de BDD choisie (MYISAM ou INNODB) tu peux gérer complètement le mode d'indexation en l'optimisant.
    C'est avec le moteur INNODB menu gestion des relations (au centre de la strucure de ta table en dessous du dernier champs en bleu comme un lien)

    Cordialement,

  3. #3
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Plus précisément "Agence.idagence", identifiant une agence de manière unique, est une clef primaire (indexée d'office) et "commune.idAgence" doit être marqué comme indexé. Ensuite c'est le travail de MySQL de trouver quels sont les indexes optimums à utiliser pour chaque requête parmis ceux disponibles.
    (Il est accessoirement possible de lui forcer la main mais c'est vraiment en désespoir de cause pour les cas tordus)

    Pour savoir comment MySQL exécute une requête et quels indexes sont utilisés, il suffit de le lui demander : "EXPLAIN SELECT [...]"


    Ensuite il est possible, mais non obligatoire, de déclarer "commune.idAgence" comme clef étrangère ce qui permettra, à condition d'utiliser InnoDb, d'avoir une vérification pour être certain de bien référencer une valeur légale de "Agence.idagence" (sinon la modification/insertion sera refusée par MySQL).

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut
    Avec un peu de retard merci pour vos réponses.. J'ai effectivement utilisé INNODB comme type de "tables"..

    Je vais tester tout ca

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

Discussions similaires

  1. [SQL2000] Utilisation des index ...
    Par scornille dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/05/2006, 16h07
  2. Utilisation des Indexes
    Par Wurlitzer dans le forum Oracle
    Réponses: 1
    Dernier message: 24/04/2006, 18h46
  3. Requête SELECT : limite d'utilisation des index
    Par DadaWeb dans le forum Requêtes
    Réponses: 7
    Dernier message: 07/12/2005, 22h24
  4. Compteur sur l'utilisation des index
    Par hkhan dans le forum Administration
    Réponses: 11
    Dernier message: 14/10/2004, 17h57
  5. Utilisation des "indexs" ?
    Par vandeyy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/09/2004, 07h49

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