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 :

Structure de base de donnée (optimisation?)


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut Structure de base de donnée (optimisation?)
    Bonsoir,


    j'aimerai, si possible qu'une personne qui connaisse me donne quelque information sur les types qu'il faut attribuer aux différents champs.

    j'aimerai crée une table nommé "messages"
    dans laquelle il y a 12 champs,
    `id` <- contenant l'id du message, qui doit être incrémentable
    `statut` <- sous la forme numérique, de 0 à 5
    `permission` <- sous le forme numérique aussi, sous la forme 0000 à 1111
    `article` <- contenant l'id de l'article avec lequel il est en relation
    `date` <- contenant la date (sous forme mysql)
    `auteur` <- l'id de l'auteur
    `titre` <- titre, limité à 255 caractères
    `contenu` <- contenu du message, sans limite imposé
    `modifications_date` <- date sous la forme mysql de la modification
    `modifications_raison` <- texte, limité à 255 caractères
    `popularite` <- forme numérique, de -100 à 100
    Voilà, j'aimerai savoir si vous pourriez me crée la structure la plus OPTIMISE possible
    voici celle que j'ai crée:
    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 `'.$sql_prefixe.'messages` (
    	`id` BIGINT UNSIGNED NOT NULL auto_increment ,
    	`statut` INT UNSIGNED NOT NULL ,
    	`permission` INT UNSIGNED NOT NULL ,
    	`article` BIGINT UNSIGNED NOT NULL ,
    	`date` DATETIME NOT NULL ,
    	`auteur` BIGINT UNSIGNED NOT NULL ,
    	`titre` VARCHAR(255) NOT NULL ,
    	`contenu` LONGTEXT NOT NULL ,
    	`modifications_date` DATETIME NOT NULL ,
    	`modifications_raison` VARCHAR(255) NOT NULL ,
    	`popularite` INT UNSIGNED NOT NULL ,
    	PRIMARY KEY  (`id`, `statut`, `permission`),
    	KEY  (`article`, `message`, `titre`, `popularite`)
    ) ENGINE = MYISAM ;
    je vous remercie d'avance

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Tu peux mettre des tinyint pour les nombres entiers entre -128 et 127. Pour les ids, un int est en géneral suffisant (jusqu'à 4 milliards et des brouettes en unsigned). Sinon ça me parait pas mal.

    http://dev.mysql.com/doc/refman/5.0/...ric-types.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    merci, mais les choix ne joue pas sur la vitesse de réponses des tables?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Ben si : plus la taille d'une ligne est faible et plus ça va vite. Ca prend moins de place en mémoire, sur le disque, ça va plus vite à lire et à écrite etc.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    ok , merci, c'est juste ça, si on met un bigint et que le chiffre et 6 par exemple? ça ne va pas plus vite ou plus lentement que si on avait mi tynint?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Un bigint c'est 8 octets, un tinyint un seul, donc le bigint prend 8 fois plus de place. Ce qui prend du temps dans une base c'est essentiellement les lectures et écritures sur le disque dur, donc plus tu écris/lis de données et plus ça met de temps.

    Il y a un autre facteur : plus les données sont petites et plus la base peut en garder en mémoire vive. Donc les lectures ne passent pas par le disque et on gagne encore du temps.

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

Discussions similaires

  1. Structure de base de données pour un questionnaire
    Par maminirina dans le forum MySQL
    Réponses: 1
    Dernier message: 24/10/2008, 09h09
  2. Structure de base de données
    Par hphil dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 19/07/2006, 20h45
  3. Réponses: 8
    Dernier message: 05/12/2005, 12h52
  4. Réponses: 4
    Dernier message: 17/02/2004, 08h36
  5. structure des bases de données Palm
    Par nomdutilisateur dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/01/2004, 17h47

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