Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/02/2007, 19h57   #1
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
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,
Citation:
`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 :
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
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 20h28   #2
Membre expérimenté
 
Inscription : juillet 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 548
Points : 550
Points : 550
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
the-gtm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 20h33   #3
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
merci, mais les choix ne joue pas sur la vitesse de réponses des tables?
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 20h38   #4
Membre expérimenté
 
Inscription : juillet 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 548
Points : 550
Points : 550
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.
the-gtm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 20h41   #5
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
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?
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 21h05   #6
Membre expérimenté
 
Inscription : juillet 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 548
Points : 550
Points : 550
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.
the-gtm est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h22.


 
 
 
 
Partenaires

Hébergement Web