Tipps:
-
Cache die Tabelle Metadaten . Standardmäßig
Zend_Db_Table
versucht jedes Mal, wenn Ihr Tabellenobjekt instanziiert wird, Metadaten über die Tabelle zu entdecken. Verwenden Sie einen Cache, um die Anzahl der erforderlichen Schritte zu reduzieren. Oder codieren Sie es in Ihrer Tabellenklasse fest (Hinweis:DB-Tabellen sind keine Modelle ). -
Verwenden Sie
EXPLAIN
um den Optimierungsplan von MySQL zu analysieren. Wird ein Index effektiv verwendet?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Verwenden Sie
BENCHMARK()
um die Geschwindigkeit der Abfrage zu messen, ohne PHP zu verwenden. Die Unterabfrage muss eine einzelne Spalte zurückgeben, stellen Sie also sicher, dass Sie eine nicht indizierte Spalte zurückgeben, damit die Abfrage die Daten berühren muss, anstatt nur einen Indexeintrag zurückzugeben.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Beachten Sie, dass
Zend_Db_Adapter
lazy-loads seine db-Verbindung, wenn Sie die erste Abfrage machen. Wenn also die Verbindung zum MySQL-Server langsam ist, geschieht dies, wenn Sie das Table-Objekt instanziieren (wenn es Metadaten abfragt). Gibt es einen Grund, warum dies lange dauern könnte? DNS-Lookups , vielleicht?