ヒント:
-
テーブルをキャッシュしますメタデータ 。デフォルトでは、
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ルックアップ 、おそらく?