3

Yii のアプリケーションに MySQL データベースを使用しています。データベースには、小さなテーブル (ユーザーの詳細を保存するようなもの) と大きなテーブル (大きな請求書データを保存するもの) の両方が含まれています。大きなテーブルからデータを取得するためにクエリを結合しているため、サイトが非常に遅くなります。そこで、パフォーマンスを向上させるために MySQL クエリ キャッシュを有効にしました。しかし、それは恒久的な解決策ではありません。日が経つと、データは非常に巨大になります。パフォーマンスを改善するための提案はありますか? 大きなデータクエリを処理するために Yii と統合できるデータベースは他にありますか?

クエリは次のとおりです。

SELECT u.accountnumber, u.chargedescription, ROUND(SUM(u.netamount), 2) as cost, p.value, p.price FROM `reports` `u` JOIN `reportsdata` `p` ON u.trackingnumber=p.value WHERE chargedescriptioncode='003' GROUP BY `u`.`trackingnumber` 

"reports" と "reportsdata" はどちらも大きなデータ テーブルです。両方とも、巨大なリストである追跡番号に結合されています。そのため、trackingnumber が大きくなるたびに、クエリが遅れて CPU の実行時間が失われます。

4

1 に答える 1

2

大規模なデータを扱うには、ActiveRecord の代わりにDAOQuery Builderを使用することをお勧めします: http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder

柔軟性は劣りますが、パフォーマンスは向上します。

データを集約してキャッシュに入れることができます (ActiveRecord をキャッシュするのではなく、準備されたデータをキャッシュします)。

于 2013-11-08T12:16:34.943 に答える