Conseils :
-
Cache la table métadonnées . Par défaut,
Zend_Db_Table
essaie de découvrir les métadonnées sur la table chaque fois que votre objet de table est instancié. Utilisez un cache pour réduire le nombre de fois qu'il doit le faire. Ou bien codez-le en dur dans votre classe Table (remarque :les tables db ne sont pas des modèles ). -
Utilisez
EXPLAIN
pour analyser le plan d'optimisation de MySQL. Utilise-t-il un index de manière efficace ?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Utilisez
BENCHMARK()
pour mesurer la vitesse de la requête, sans utiliser PHP. La sous-requête doit renvoyer une seule colonne. Veillez donc à renvoyer une colonne non indexée afin que la requête touche les données au lieu de simplement renvoyer une entrée d'index.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Notez que
Zend_Db_Adapter
charge paresseusement sa connexion à la base de données lorsque vous effectuez la première requête. Donc, s'il y a une lenteur dans la connexion au serveur MySQL, cela se produira lorsque vous instanciez l'objet Table (lorsqu'il interroge les métadonnées). Une raison pour laquelle cela pourrait prendre beaucoup de temps? Recherches DNS , peut-être ?