ヒント:
-
テーブルをキャッシュしますメタデータ 。デフォルトでは、
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
に注意してください lazy-最初のクエリを実行するときにdb接続をロードします。したがって、MySQLサーバーへの接続に速度が遅い場合は、Tableオブジェクトをインスタンス化するときに発生します(メタデータをクエリするとき)。これに時間がかかる理由は何ですか? DNSルックアップ 、おそらく?