Bonjour
Je suis en train de faire un petit site pour garder une trace de l'évolution d'indices. Et régulièrement je change les indices que j'observe. Donc pendant 15jours je vais observer 7 indices puis les 15 jours suivant je vais regarde 10 autres indices... A chaque heure j'ai un script qui me récupère les valeurs des indices et les ajoute dans la table.
Ma base de données se compose des 3 tables suivantes
Citation :
PERIODE: Liste des periodes d'observation qui contient le nom de la periode et la plage de date
- id_periode
- nom_periode
- debut_periode
- fin_periode
|
Citation :
INDICE: liste des indices a observer
- id_indice
- id_periode
- nom_indice
|
Citation :
VALEUR: les valeurs des indices mise a jour a chaque heure
- id_valeur
- id_indice
- date_maj
- valeur_indice
|
Mon soucis c'est quand je veux sortir les valeurs de la table pour les afficher. Avec la requete qui suit je sors les valeurs pour une periode qui contient 5 indices:
Citation :
SELECT
T0.date_maj, T0.valeur_indice AS Credit_T0, T1.date_maj, T1.valeur_indice AS Credit_T1, T2.date_maj, T2.valeur_indice AS Credit_T2, T3.date_maj, T3.valeur_indice AS Credit_T3, T4.date_maj, T4.valeur_indice AS Credit_T4 FROM valeur AS T0 LEFT JOIN valeur AS T1 ON T1.id_incide='2' LEFT JOIN valeur AS T2 ON T2.id_incide='3' LEFT JOIN valeur AS T3 ON T3.id_incide='4' LEFT JOIN valeur AS T4 ON T4.id_incide='5' WHERE T0.id_incide='1' GROUP BY T0.date_maj ORDER BY T0.date_maj DESC
|
Jusqu'a 4 indices ca va, mais en passant a 5 le tps d'affichage de la page (qui pour le moment n'affiche pas les valeurs donc c'est uniquement le temps d'extraction des données de la base) grimpe a 25sec et avec 6... j'ai pas eu la patience d'attendre.
La premiere chose que je vois pour optimiser ca c'est de virer les LEFT JOIN et de tout mettre dans le WHERE. Ca m'embete car si une valeur pour 1 indice et pour 1 mise a jour est manquante, j'ai les valeurs des autres indices qui ne seront pas extrait.
Je me dis que je n'ai peut etre pas structuré correctement mes tables, peut etre il faudrait ajouter une table avec la liste des heure de mise a jour.
Qu'en pensez-vous, est ce un probleme d'organisation SQL ou bien de requete mal construite?
Merci par avance