Publié le 12/11/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Optimiser une base MySQL avec les bons types de champ

Par définition, le rôle d'une base de données est de stocker une grande quantité de données. Pour y enregistrer du texte, des nombres ou encore des dates, il est essentiel de bien choisir le type de colonne.
La première raison est d'optimiser l'espace occupé par la base de données. En général, plus la base est compacte, plus les performances sont élevées.
La deuxième raison est de garantir l'intégrité et la cohérence des données. En optant pour un type de donnée strict et prévu au plus juste, une valeur incorrecte sera automatiquement refusée lors de l'insertion d'un nouvel enregistrement.

Choisir un champ MySql

Le choix d'une architecture pour sa base de donnée est déterminant. En plus de la répartition des valeurs dans un ensemble de table, le choix du type de champs au plus proche des valeurs attendues peut également apporter des gains de performance.

Type Int: nombre entier

Champs Intervalle Taille
TINYINT -128 a 127 1 octet
SMALLINT - 32 768 a 32 767 2 octet
MEDIUM INT
-8 388 608 a 8 388 607 3 octet
INT -2 147 483 648 a 2 147 483 647 4 octet
BIGINT -9 223 372 036 854 775 808
a 9 223 372 036 854 775 807
8 octet

- privilégier le type INT dans la définition des champs d'une table, ce type occupe l'espace le plus faible et offre les meilleures performances si le champs en définit en tant qu'index,
- en fixant l'attribut unsigned, les valeurs seront toujours positives. L'intérêt est de doubler la capacité de stockage du type. Par exemple, l'intervalle de TINYINT passe de 0 a 255 avec l'attribut unsigned.

Type String : chaine de caractère

Champs Intervalle Taille
CHAR(x) 0 a 255 x octet
VARCHAR(x) 0 a 255 x octet +1
TINYTEXT et TINYBLOB 0 a 255 x octet +1
TEXT et BLOB 0 a 65 535 x octet +2
MEDIUMTEXT et MEDIUMBLOB 0 a 16 777 215 x octet +3
LONGTEXT et LONGBLOB 0 a 4 294 967 296 x octet +4

- a première vue les types CHAR et VARCHAR semblent identiques. En fait, une valeur stockée dans un champ CHAR occupe toujours la taille maximale définie en x contrairement a VARCHAR. En contre-partie, les performances du type CHAR sont supérieurs a celle des données en VARCHAR.

Type Date et Heure

Champs Intervalle Format Taille
DATE '1000-01-01' a '9999-12-31' YYYY-MM-DD 3 octets
DATETIME '1000-01-01 00:00:00' a '9999-12-31 23:59:59' YYYY-MM-DD HH:MM:SS 8 octets
TIME '00:00:00' a '23:59:59' HH:MM:SS 3 octets
TIMESTAMP 19700101000000 a 20380119041407 YYYYMMDDHHMMSS 4 octets

En complément aux 3 types de champ les plus courants, la documentation Mysql est consultable en ligne en détaillant chaque type.
fds

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
tuto - webmaster
Mise a jour
12/11/2010
Visualisation
vu 4020 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans logiciel

prise en charge du format ipV6. L'api est compatible avec tous les ip qu'elles soient au format ipV4 ou ipV6.

Publié par Benjamin dans tuto

Fonctionne nickel, merci pour le script :)

Publié par Yannick dans tuto

Sur un de mes sites j'ai vraiment du mal a gerer le gzip sur 1and1, Je vais tout de suite tester tout ca et je vous tiens informe :)

Publié par jpa71 dans java

Efficace.. Bien commente.. Du code bien pense
Bravo

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.