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 :

Optimisation base de données?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut Optimisation base de données?
    Bonjour,
    J'utilise une base MySQL5, je souhaiterai crée une base de données et prevoit un nombre important de connexion.
    Je souhaiterai savoir pour la création de mes table, qu'elle serait la meilleure solution pour une meilleure rapidité de la base de données (ici notament pour la recherche par critère d'une personne dans la base de données) :

    Solution 1 :
    ---
    - Personne
    - Num_client int(10)
    - coupe_de_chv enum(court, long, mi-long...)
    - couleur_yx enum(bleu, vert, marron,...)
    - ...
    ---

    Solution 2 :
    ---
    - Personne
    - Num_client int(10)
    - Num_coupe_de_chv int(2)
    - Num_couleur_yx int(2)
    - ...
    ---
    - Coupe_de_chv
    - Num_coupe_de_chv int(2)
    - Libelle_coupe_de_chv
    ---
    - Couleur_yx
    - Num_couleur_yx int(2)
    - Libelle_couleur_yx
    ---

    Merci à l'avance

    Cordialement

  2. #2
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Salut,

    Si tes recherches se font via menus déroulants (exemple : des <select> en html), il te sera bien plus simple de générer les valeurs possibles avec des tables "coupe_cheveux" et "couleur_yeux" qu'avec une définition d'enum.

    Après, pour la requête en elle-même, ça ne changera absolument rien si ta requête est faite avec des entiers comme num_coupe_cheveux.

    Seule différence entre tes solutions : les valeurs d'un enum sont stockées sur 2 octets. Alors qu'avec tes clés étrangères, tu occupes 4 octets pour chaque valeur ! Eh oui, INT(2) vaut toujours 4 octets... Voir les types TINYINT ou SMALLINT pour optimiser un peu tout ça.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut et les jointures?
    Merci pour ta réponse
    Je pensais que plus il y avait de jointure plus il y avai de trafic sur la base de données et donc plus il y avait de temps de réponse??? non???

  4. #4
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Dans ton cas, les jointures sont très simples, avec des tables très petites. Donc, ça ne pose pas beaucoup de problèmes de performances. Mais ce que je voulais dire, c'est qu'avec ta 2ème solution, tu n'as même pas besoin de réaliser de jointure pour la recherche de clients.

    Si par exemple ton application est un site web, je suppose que tu génères un formulaire HTML avec différents menus déroulants, créés grâce à des SELECT sur les tables coupe de cheveux, couleurs de yeux, ... Et au final, tu as des menus déroulants comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="xxx">
    <option value="1">bleus</option>
    <option value="2">bruns</option>
    ...
    </select>
    Et quand tu fais ta requête de recherche, tu n'as plus besoin de spécifier l'intitulé de la couleur de yeux. Tu peux utiliser directement l'identifiant qui est la valeur sélectionnée dans le menu déroulant.

    Donc pas de jointure ! Et comme je l'ai dit, un menu déroulant comme l'exemple ci-dessus est plus simple à générer avec une table "couleurs_yeux" qu'avec un type enum. Et un type enum est beaucoup plus difficile à faire évoluer que le contenu d'une table (ex: ajout d'une couleur d'yeux).

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

Discussions similaires

  1. [2008R2] Optimisation Base de données
    Par binohit dans le forum Administration
    Réponses: 22
    Dernier message: 06/04/2015, 10h30
  2. Optimisation base de données SQL Server 2000: Indexation
    Par Mouckson dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/05/2012, 01h39
  3. Optimisation base de données
    Par denis13 dans le forum Requêtes
    Réponses: 13
    Dernier message: 30/09/2011, 10h01
  4. Optimisation base de données
    Par nathann dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/04/2010, 16h47
  5. outils de optimisation base de donnée
    Par simomig29 dans le forum Outils
    Réponses: 5
    Dernier message: 12/02/2008, 08h35

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