Tipy:
-
Uložte tabulku do mezipaměti metadata . Ve výchozím nastavení
Zend_Db_Table
se pokusí zjistit metadata o tabulce pokaždé, když se vytvoří instance vašeho objektu tabulky. Použijte mezipaměť ke snížení počtu opakování. Nebo jej napevno zakódujte ve své třídě Table (poznámka:tabulky db nejsou modely ). -
Použijte
EXPLAIN
analyzovat plán optimalizace MySQL. Používá index efektivně?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Použijte
BENCHMARK()
pro měření rychlosti dotazu, bez použití PHP. Poddotaz musí vracet jeden sloupec, takže se ujistěte, že vracíte neindexovaný sloupec, aby se dotaz musel dotknout dat namísto pouhého vracení položky rejstříku.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Všimněte si, že
Zend_Db_Adapter
lazy-loads své db připojení, když uděláte první dotaz. Pokud se tedy připojování k serveru MySQL zpomalí, stane se to při vytváření instance objektu Table (když se dotazuje na metadata). Nějaký důvod, proč by to mohlo trvat dlouho? Vyhledávání DNS , možná?