J'ai écrit un logiciel pour préparer une base de données
généalogiques. En gros, il insère dans une base SQL des
données de fichiers Excel et produit en bout de ligne des
pages web statiques pour consulter ces données. J'ai aussi
une version pour développement qui affiche directement telle
fiche.
Le système comprend plusieurs tables, de 200 000 à 700 000
enregistrements.
J'ai voulu optimiser une des opérations.
Une des tables contient 700 000 enregistrements et je faisais
un select qui prenait 15 secondes sur mon ordinateur portable
ou 2 sur mon ordinateur de tables. Le select était du genre
select table where no = 1234 and code like "a%"
J'ai d'abord remplacé le champ code de texte en varchar mais
cela n'a rien donné.
Ensuite, j'ai mis la donnée requise pour cette opération dans
une autre table (donc, ajout d'un champ) pour avoir plutôt
select table2 where no = 1234
Avant l'optimisation (sic), la génération d'une base html statique
se faisait en 2h 9 min 51 sec. Après, cela a pris 2h 10 m 56 sec !!!
C'est dingue ! J'ai enlevé une opération qui est faite 136 fois et
qui dure 2,1 secondes selon phpmyadmin (donc 4,76 minutes) et cela
prend 1 minute de plus et non 4 minutes de moins. Comme si en ajoutant
un champ, j'aurais ajouté 10 minutes au temps de traitement alors que
je lis cette table avec des select qui reposent sur des champs avec
index.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Le 15/10/2014 02:59, Denis Beauregard a écrit :
[optimisations base de données]
Optimiser ? Mais à quoi cela sert-il ?
Certes, mais quel rapport avec PHP ? Tu ferais ces requêtes depuis un programme en C ou en Fortran, je pense que ça ne changerait rien au temps d'exécution...
Je te suggère de publier plutôt cette expérience dans le groupe fr.comp.applications.sgbd, et peut-être même auras-tu des explications sur ce comportement, ou des conseils pour améliorer les choses !
Cordialement, -- Olivier Miakinen
Le 15/10/2014 02:59, Denis Beauregard a écrit :
[optimisations base de données]
Optimiser ? Mais à quoi cela sert-il ?
Certes, mais quel rapport avec PHP ? Tu ferais ces requêtes depuis un
programme en C ou en Fortran, je pense que ça ne changerait rien au
temps d'exécution...
Je te suggère de publier plutôt cette expérience dans le groupe
fr.comp.applications.sgbd, et peut-être même auras-tu des explications
sur ce comportement, ou des conseils pour améliorer les choses !
Certes, mais quel rapport avec PHP ? Tu ferais ces requêtes depuis un programme en C ou en Fortran, je pense que ça ne changerait rien au temps d'exécution...
Je te suggère de publier plutôt cette expérience dans le groupe fr.comp.applications.sgbd, et peut-être même auras-tu des explications sur ce comportement, ou des conseils pour améliorer les choses !
Cordialement, -- Olivier Miakinen
Denis Beauregard
Le Wed, 15 Oct 2014 17:36:46 +0200, Olivier Miakinen <om+ écrivait dans fr.comp.lang.php:
Le 15/10/2014 02:59, Denis Beauregard a écrit :
[optimisations base de données]
Optimiser ? Mais à quoi cela sert-il ?
Certes, mais quel rapport avec PHP ? Tu ferais ces requêtes depuis un programme en C ou en Fortran, je pense que ça ne changerait rien au temps d'exécution...
C'est écrit en PHP avec EasyPHP. Mais c'est vrai que le problème est sans doute plutôt relié à SQL ou mySQL.
Je te suggère de publier plutôt cette expérience dans le groupe fr.comp.applications.sgbd, et peut-être même auras-tu des explications sur ce comportement, ou des conseils pour améliorer les choses !
Bonne idée. C'est fait.
Denis
Le Wed, 15 Oct 2014 17:36:46 +0200, Olivier Miakinen
<om+news@miakinen.net> écrivait dans fr.comp.lang.php:
Le 15/10/2014 02:59, Denis Beauregard a écrit :
[optimisations base de données]
Optimiser ? Mais à quoi cela sert-il ?
Certes, mais quel rapport avec PHP ? Tu ferais ces requêtes depuis un
programme en C ou en Fortran, je pense que ça ne changerait rien au
temps d'exécution...
C'est écrit en PHP avec EasyPHP. Mais c'est vrai que le problème
est sans doute plutôt relié à SQL ou mySQL.
Je te suggère de publier plutôt cette expérience dans le groupe
fr.comp.applications.sgbd, et peut-être même auras-tu des explications
sur ce comportement, ou des conseils pour améliorer les choses !
Le Wed, 15 Oct 2014 17:36:46 +0200, Olivier Miakinen <om+ écrivait dans fr.comp.lang.php:
Le 15/10/2014 02:59, Denis Beauregard a écrit :
[optimisations base de données]
Optimiser ? Mais à quoi cela sert-il ?
Certes, mais quel rapport avec PHP ? Tu ferais ces requêtes depuis un programme en C ou en Fortran, je pense que ça ne changerait rien au temps d'exécution...
C'est écrit en PHP avec EasyPHP. Mais c'est vrai que le problème est sans doute plutôt relié à SQL ou mySQL.
Je te suggère de publier plutôt cette expérience dans le groupe fr.comp.applications.sgbd, et peut-être même auras-tu des explications sur ce comportement, ou des conseils pour améliorer les choses !