Tips:
-
Cachelagra tabellen metadata . Som standard är
Zend_Db_Table
försöker upptäcka metadata om tabellen varje gång ditt tabellobjekt instansieras. Använd en cache för att minska antalet gånger den måste göra detta. Eller hårdkoda den i din tabellklass (observera:db-tabeller är inte modeller ). -
Använd
EXPLAIN
att analysera MySQL:s optimeringsplan. Använder det ett index effektivt?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Använd
BENCHMARK()
för att mäta hastigheten på frågan, utan att använda PHP. Underfrågan måste returnera en enskild kolumn, så se till att returnera en oindexerad kolumn så att frågan måste röra data istället för att bara returnera en indexpost.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Observera att
Zend_Db_Adapter
lazy-lastar sin db-anslutning när du gör den första frågan. Så om det är någon långsamhet i anslutningen till MySQL-servern, kommer det att hända när du instansierar Table-objektet (när det frågar efter metadata). Någon anledning till att detta kan ta lång tid? DNS-sökningar , kanske?