Suggerimenti:
-
Memorizza la tabella nella cache metadati . Per impostazione predefinita,
Zend_Db_Table
tenta di scoprire i metadati sulla tabella ogni volta che viene istanziata l'oggetto tabella. Usa una cache per ridurre il numero di volte che deve farlo. Oppure codificalo nella tua classe Table (nota:le tabelle db non sono modelli ). -
Usa
EXPLAIN
per analizzare il piano di ottimizzazione di MySQL. Sta usando un indice in modo efficace?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Usa
BENCHMARK()
per misurare la velocità della query, non utilizzando PHP. La sottoquery deve restituire una singola colonna, quindi assicurati di restituire una colonna non indicizzata in modo che la query debba toccare i dati invece di restituire solo una voce di indice.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Nota che
Zend_Db_Adapter
lazy-carica la sua connessione db quando si effettua la prima query. Quindi, se c'è qualche lentezza nella connessione al server MySQL, accadrà mentre crei un'istanza dell'oggetto Table (quando interroga i metadati). Qualche motivo per cui questo potrebbe richiedere molto tempo? Ricerche DNS , forse?