Consejos:
-
Almacenar en caché la tabla metadatos . Por defecto,
Zend_Db_Table
intenta descubrir metadatos sobre la tabla cada vez que se crea una instancia de su objeto de tabla. Use un caché para reducir la cantidad de veces que tiene que hacer esto. O codifíquelo en su clase Table (nota:las tablas db no son modelos ). -
Use
EXPLAIN
para analizar el plan de optimización de MySQL. ¿Está usando un índice de manera efectiva?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Use
BENCHMARK()
para medir la velocidad de la consulta, sin usar PHP. La subconsulta debe devolver una sola columna, así que asegúrese de devolver una columna no indexada para que la consulta tenga que tocar los datos en lugar de solo devolver una entrada de índice.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Tenga en cuenta que
Zend_Db_Adapter
Lazy-loads su conexión db cuando realiza la primera consulta. Entonces, si hay alguna lentitud en la conexión al servidor MySQL, sucederá cuando cree una instancia del objeto Table (cuando consulta los metadatos). ¿Alguna razón por la que esto podría llevar mucho tiempo? Búsquedas de DNS , tal vez?