Pontas:
-
Cache da tabela metadados . Por padrão,Zend_Db_Tabletenta 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 ).
-
UseEXPLAINpara 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_Adaptercarrega 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?