我的页面需要12秒才能加载!
该页面需要显示由SQL计数查询生成的20个不同的数据项。
没有选项来组合查询,因为每次SQL都不同。
我已尝试索引相关表格,但无济于事......
我还考虑过实现memcache和使用页面缓存。
我正在使用流行的codeigniter php框架。
有人有任何建议吗?
答案 0 :(得分:0)
在更新单独的“计数”表时创建一个在命令行中执行计数的cron。因此,您将在计数表中有20个条目,您可以在一个查询中请求所有条目。 在页面加载期间仅查询该表。
你可以自己决定cron运行的频率,但要确保它不会花太长时间,否则只需将不同的count-update-process分成不同的cron文件(或命令)。
答案 1 :(得分:0)
我想它可能是微不足道的,但是你在每个COUNT()查询中实际返回了多少个字段?我在过去听说过使用COUNT(),你实际上最好使用COUNT(*)之类的东西,而不是COUNT(columnname),因为数据库可以基于任何列最快的方式。
也可能值得看看CodeIgniter的数据库缓存类 - 这听起来就像那种有用的情况。
CodeIgniter的Profiler类对于这样的事情非常方便。如果您启用它并使用它生成的报告来了解每个查询所花费的时间,您可以至少优化其中一些查询。
此外,您可能需要考虑使用字节码缓存 - APC非常好,并且似乎与CodeIgniter一起使用。据我所知,它不会加速实际的数据库事务,但它可能通过加快PHP执行速度来提高应用程序的速度。