Tip:
-
Cache tabellen metadata . Som standard er
Zend_Db_Table
forsøger at finde metadata om tabellen, hver gang dit tabelobjekt instansieres. Brug en cache til at reducere antallet af gange, den skal gøre dette. Ellers hårdkode den i din tabelklasse (bemærk:db-tabeller er ikke modeller ). -
Brug
EXPLAIN
at analysere MySQL's optimeringsplan. Bruger det et indeks effektivt?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Brug
BENCHMARK()
at måle hastigheden af forespørgslen, ikke ved hjælp af PHP. Underforespørgslen skal returnere en enkelt kolonne, så sørg for at returnere en ikke-indekseret kolonne, så forespørgslen skal berøre dataene i stedet for blot at returnere en indeksindgang.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Bemærk at
Zend_Db_Adapter
lazy-indlæser sin db-forbindelse, når du laver den første forespørgsel. Så hvis der er nogen langsomhed med at oprette forbindelse til MySQL-serveren, vil det ske, når du instansierer Table-objektet (når det forespørger om metadata). Enhver grund til at det kan tage lang tid? DNS-opslag måske?