我在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执行时间。
答案 0 :(得分:2)
要处理大数据,请更好地使用 DAO 和查询生成器而不是ActiveRecord:http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder
灵活性较差,但性能更高。
您可以聚合数据并将其放在缓存中(不缓存ActiveRecord,但缓存准备好的数据)