Съвети:
-
Кеширане на таблицата метаданни . По подразбиране
Zend_Db_Table
се опитва да открие метаданни за таблицата всеки път, когато вашият обект на таблица се инстанцира. Използвайте кеш, за да намалите колко пъти трябва да направите това. Или го кодирайте твърдо във вашия клас Table (забележка:db таблиците не са модели ). -
Използвайте
EXPLAIN
за да анализирате плана за оптимизация на MySQL. Използва ли индекс ефективно?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Използвайте
BENCHMARK()
за измерване на скоростта на заявката, без използване на PHP. Подзаявката трябва да върне една колона, така че не забравяйте да върнете неиндексирана колона, така че заявката да докосне данните, вместо просто да връща индексен запис.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Имайте предвид, че
Zend_Db_Adapter
мързеливо зарежда своята db връзка, когато направите първата заявка. Така че, ако има някаква бавност при свързването към MySQL сървъра, това ще се случи, когато инстанцирате обекта Table (когато той запитва метаданни). Има ли причина това да отнеме много време? DNS търсения , може би?