Optimisation lecture base de donnée
Fermé
Neimad94
-
14 juil. 2014 à 13:18
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 - 15 juil. 2014 à 13:04
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 - 15 juil. 2014 à 13:04
A voir également:
- Optimisation lecture base de donnée
- Optimisation pc - Accueil - Utilitaires
- Confirmation de lecture whatsapp - Guide
- Accusé de lecture gmail - Guide
- Formules excel de base - Guide
- Célia doit nettoyer le tableau ci-dessous pour l’ajouter à la base de données de son entreprise. les données sont ensuite traitées automatiquement. quelles sont les 4 cellules qui risquent de poser problème ? ✓ - Forum Excel
3 réponses
cyril1982
Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
12
Modifié par cyril1982 le 14/07/2014 à 21:11
Modifié par cyril1982 le 14/07/2014 à 21:11
Bonjour,
La première chose à faire est de ne faire qu'une seule requête au lieu de 490000 !!!!
La première chose à faire est de ne faire qu'une seule requête au lieu de 490000 !!!!
$req="SELECT urlimage FROM grille2 "; $donne= $bdd->query ($req); while ($data = $donne->fetch()) { $url=$data['urlimage']; print '<img src="'.$url.'" alt="texte alternatif" />'; } $donne->closeCursor();
Hummmmm......Désolé, j'ai mal exposé mon problème. En fait dans ma table j'ai un champ actif (0 ou 1) et 2 champs url image (url 1 si actif 0 et url 2 si actif 1).
L'image s'affiche donc en fonction du champ actif et dans tous les cas je veux afficher TOUTES les images.
Exemple :
Ligne Colonne Actif URLimage
1 1 0 1
1 2 0 1
1 3 1 2
1 4 0 1
1 5 1 2
Sachant que le champs actif changera au fil du temps donc obliger de rebalayer la table à chaque fois...
L'image s'affiche donc en fonction du champ actif et dans tous les cas je veux afficher TOUTES les images.
Exemple :
Ligne Colonne Actif URLimage
1 1 0 1
1 2 0 1
1 3 1 2
1 4 0 1
1 5 1 2
Sachant que le champs actif changera au fil du temps donc obliger de rebalayer la table à chaque fois...
cyril1982
Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
12
15 juil. 2014 à 13:04
15 juil. 2014 à 13:04
Bonjour,
Si tu es obligé de re-parcourir ta table à chaque fois, ma solution est correcte, une seule requête qui charge tout.
Par contre, tu peux l'améliorer en ne chargeant que les lignes qui ont évolué, par exemple en ajoutant une colonne 'updated' qui indiquera s'il y a eut une mise à jour depuis le dernier chargement.
Tu couples ce fonctionnel avec un cache 'fichier' qui contient le dernier état de toutes tes lignes :
A voir si php aime les tableaux avec 490 000 éléments ...
Mais comment vas-tu afficher 490000 éléments sur une page web, elle va faire combien de Mo oO !???
Si tu es obligé de re-parcourir ta table à chaque fois, ma solution est correcte, une seule requête qui charge tout.
Par contre, tu peux l'améliorer en ne chargeant que les lignes qui ont évolué, par exemple en ajoutant une colonne 'updated' qui indiquera s'il y a eut une mise à jour depuis le dernier chargement.
Tu couples ce fonctionnel avec un cache 'fichier' qui contient le dernier état de toutes tes lignes :
$images = array(); //Chargement du cache if (file_exists(...)) { $images = unserialize(file_get_contents(...)); } //On ne charge que les lignes qui ont évolué $req="SELECT numligne, numcolonne, urlimage FROM grille2 where updated = 1 "; $donne= $bdd->query ($req); while ($data = $donne->fetch()) { $images [$data['numligne'][$data['numcolonne'] = $data; print '<img src="'.$url.'" alt="texte alternatif" />'; } $donne->closeCursor(); foreach ($images as $ligne => $imagesByCol) { foreach ($imagesByCol as $colonne => $data) { print '<img src="'.$data['urlimage'].'" alt="texte alternatif" />'; } } //Remise à zéro du flag de dernière mise à jour $req="update grille2 set updated = 0 where updated = 1 "; $donne= $bdd->query ($req); //Sauvegarde le cache file_puts_content(..., serialize($images));
A voir si php aime les tableaux avec 490 000 éléments ...
Mais comment vas-tu afficher 490000 éléments sur une page web, elle va faire combien de Mo oO !???