Wskazówki:
-
Przechowuj tabelę w pamięci podręcznej metadane . Domyślnie
Zend_Db_Table
próbuje odkryć metadane dotyczące tabeli za każdym razem, gdy jest tworzony obiekt tabeli. Użyj pamięci podręcznej, aby zmniejszyć liczbę przypadków, w których musi to zrobić. Albo zakoduj go na stałe w swojej klasie Table (uwaga:tabele db nie są modelami ). -
Użyj
EXPLAIN
do analizy planu optymalizacji MySQL. Czy skutecznie wykorzystuje indeks?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Użyj
BENCHMARK()
do pomiaru szybkości zapytania, nie używając PHP. Podzapytanie musi zwrócić pojedynczą kolumnę, więc upewnij się, że zwracasz kolumnę nieindeksowaną, aby zapytanie musiało dotyczyć danych, a nie tylko zwracać wpis indeksu.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Zauważ, że
Zend_Db_Adapter
leniwy-ładuje swoje połączenie z bazą danych po wykonaniu pierwszego zapytania. Więc jeśli wystąpi spowolnienie połączenia z serwerem MySQL, stanie się to podczas tworzenia instancji obiektu Table (gdy zapyta o metadane). Czy może to zająć dużo czasu? Wyszukiwania DNS może?