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

 MySQL Discussion :

performances et table d'environ 38000 enregistrements


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 123
    Points : 84
    Points
    84
    Par défaut performances et table d'environ 38000 enregistrements
    Bonjour à tous,
    Dans la bdd sur laquelle je travaille, je dispose d'une table des communes de france, comprenant un peu plus de 38000 enregistrements. La clé primaire est le code insee de la commune, soit un VARCHAR de taille 5.
    La moindre requête opérant une jointure avec cette table - par exemple pour récupérer les noms de commune en jointure avec une table des adresses, laquelle n'est pas bien lourde (450 enregistrements) - prend des plombes (de 10 secondes à plusieurs minutes).
    J'imagine que 38000 enregistrements, ce n'est pas la mer à boire, alors qu'est ce que je rate?

  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
    Citation Envoyé par ben53 Voir le message
    La clé primaire est le code insee de la commune, soit un VARCHAR de taille 5.
    C'est une mauvaise idée !
    Cela vous fait une clef de 6 octets, là où 2 octets suffiraient. Cela pénalise les jointures.
    Par ailleurs, l'INSEE révise ces codes une fois par an, donc vos clefs primaires peuvent être amenées à changer.
    De façon générale, choisissez des clef primaires asémantiques, de type numérique ayant la plus petite taille possible.

    Pour le reste, postez les DDL de vos tables et index, car je ne pense pas que cela explique à lui seul de telles durées d'éxécutions.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 123
    Points : 84
    Points
    84
    Par défaut
    Ok je vais modifier ça, merci!
    Pour les performances, grâce au guide sur l'optimisation mysql présent sur le site, je m'en suis sorti (grâce aux index sur des clés étrangères).

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/02/2006, 16h18
  2. Performances : ANALYSE TABLE, quelle fréquence ?
    Par Mr N. dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/10/2005, 17h02
  3. comment vider une table de tous ses enregistrements ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/07/2005, 10h19
  4. [Conception][performance] mysql table de 10000 enregistrements / hashmap
    Par debdev dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 09/07/2005, 11h29
  5. [SQL SERVER] Table contient trop d'enregistrements ?
    Par Tankian dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 10/08/2004, 10h40

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