Ajouter une colonne en fonction d'une déjà existante

Eléphanteau du PHP | 32 Messages

24 mai 2007, 08:57

Bonjour,

J'utilise une BDD MySQL et j'ai une table avec plus de 300 000 entrées. J'aimerais ajouter 1 colonne `jour` qui soit en fait le résultat d'une opération mathématique sur une colonne déjà présente dans la table (`dl_date`).

Je cherchais donc à savoir s'il existe une autre solution que de boucler à la barbare sur les 300 000 entrées ?

Merci d'avance

Mammouth du PHP | 693 Messages

24 mai 2007, 09:11

Je dirais qu'il faudrait créer la colonne jours, puis après faire

Code : Tout sélectionner

UPDATE table SET jour=opération(dl_date)
Après, suivant l'opération, peut être qu'on t'en dira plus.

Mammouth du PHP | 19672 Messages

24 mai 2007, 12:06

Ceci dit, ce n'est pas une solution très souhaitable. Une base optimisée ne devrait contenir aucun champ calculé, les valeurs calculées étant justement appelées à être fausses dès la fin de leur insertion.

Donc l'idée générale, ce serait de ne rien rajouter du tout et de calculer ta valeur au moment de ta requête SELECT, donc quand tu en as besoin en lecture.

Sinon, explique-mous ce qui nécessite l'obligation d'avoir cette colonne en plus, il y aurait peut-être une manière d'aborder le problème autrement :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

24 mai 2007, 16:21

Déjà merci d'avoir répondu et désolé d'avoir été un peu succint.

En fait je dispose d'un ancien système de statistiques qui contient une colonne DATETIME (dl_date) et une colonne id (l'id unique du fichier téléchargé) et qui possède environ 300 000 entrées. J'ai élaboré un nouveau module de stats dernièrement et suite aux conseils d'un des membres de ce forum sur un autre sujet j'ai décidé d'utiliser une colonne `jour` qui optimise complètement les performances de l'outils.

J'avais donc envie de pouvoir réutiliser les stats récupérées sur les derniers mois pour tester complètement mon nouvel outils et je dois donc la mettre à jour en ajoutant cette colonne `jour`

Y'a-t-il un risque que je fasse planter le serveur par exemple (mutualisé chez Synten) ou la requête UPDATE va seulement prendre qqs secondes ?

Qu'en pensez-vous ?

Mammouth du PHP | 19672 Messages

24 mai 2007, 17:49

Qu'est-ce qui t'empèche de récupérer juste le jour dans ta colonne DATETIME ?
Voir La doc sur les fonctions de date et heure
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: