Pontas:
-
Cache da tabela metadados . Por padrão,Zend_Db_Table
tenta descobrir metadados sobre a tabela cada vez que seu objeto de tabela é instanciado. Use um cache para reduzir o número de vezes que ele precisa fazer isso. Ou então codifique-o em sua classe Table (nota:tabelas db não são modelos ).
-
UseEXPLAIN
para analisar o plano de otimização do MySQL. Ele está usando um índice de forma eficaz?
mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
UseBENCHMARK()
para medir a velocidade da consulta, não usando PHP. A subconsulta deve retornar uma única coluna, portanto, certifique-se de retornar uma coluna não indexada para que a consulta tenha que tocar nos dados em vez de apenas retornar uma entrada de índice.
mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Observe queZend_Db_Adapter
carrega lentamente sua conexão db quando você faz a primeira consulta. Portanto, se houver alguma lentidão na conexão com o servidor MySQL, isso acontecerá quando você instanciar o objeto Table (quando ele consultar metadados). Alguma razão para que isso possa levar muito tempo? pesquisas de DNS , talvez?