Type de colonne : INT ou DATETIME ?

  • Auteur de la discussion Auteur de la discussion babou
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Je fais actuellement la structure de ma base de données et je ne trouve pas réponse à ma question.

Quel est le plus avantageux pour le stockage des dates (avec l'heure) :

- Utiliser un champ DATETIME (8 octets)
- Utiliser un champ TIME (4 octets)

Si on ne se référe qu'à la taille que ces deux types utilisent, l'INT parait plus avantageux.

Mais quand est-il lors d'une recherche avec un SELECT sur ce champ ?
Lequel des deux donnera les résultats le plus rapidement ?

Merci à vous.
 
WRInaute passionné
perso (c'est peut être un tort) je stocke le résultat de la fonction time() de php sous un champ int(11) et je gère mes dates aussi par php. Je trouve ça beaucoup plus souple.
 
Nouveau WRInaute
Ben si tu stock en tant que timestamp alors utilise int.
Sinon tu mets en datetime ou time ce qui te permettra de faire des select avec des calcules de dates et heures direct en MySQL
 
Nouveau WRInaute
En fait,

Je vais être plus clair :

Comme tu l'as dit, on peut utiliser l'un ou l'autre de ces champs.
Ce que je voudrais savoir c'est si au niveau des SELECT, l'un ou l'autre donnera des résultats plus rapidement.

Par exemple :

SELECT id FROM matable WHERE date>"2005-04-01 18:54:00" (colonne `date` de type DATETIME)

SELECT id FROM matable WHERE date>"1123338821" (colonne `date` de type INT)

Lequel de ces deux formats donnera les résultats le plus rapidement ?


Merci.
 
WRInaute passionné
Le datetime sert à ça, pas le int... je trouve ça un peu absurde de ne pas l'utiliser
 
WRInaute passionné
babou a dit:
SELECT id FROM matable WHERE date>"2005-04-01 18:54:00" (colonne `date` de type DATETIME)

SELECT id FROM matable WHERE date>"1123338821" (colonne `date` de type INT)

Lequel de ces deux formats donnera les résultats le plus rapidement ?

Quand tu regardes ta table et que tu vois 1123338821, bonne chance pour savoir que c'est la date du 1er avril 2005...

La différence ne se mesure sans doute même pas en microseconde sur une requête, même si tu les faisais par paquets de mille (ce dont je doute), ça n'en vaudrait pas la peine. Et il y a des tas de fonctions mysql très pratiques avec les dates...
 
WRInaute discret
Salut,

Je suis assez d'accord avec aK. Je pense aussi que le temps gagné par la requete sur un entier (INT) est négligeable. Les fonctions SQL sur les dates permettent d'alléger le code PHP considérablement.
(est ce que cela ne joue pas aussi sur les ressources coté serveur ? I.E. : est ce que faire le maximum de calculs au niveau du serveur de base de donnée et donc décharger au max apache, n'augmente pas la rapidité d'execution? )
 
Discussions similaires
Haut