我有一个需要12秒才能加载的页面!
该页面需要显示SQL计数查询生成的20个不同的数据项。
没有组合查询的选项,因为每次SQL都不同。
我试过为相关表格编制索引,但没有用。。。
我还考虑过实现memcache和使用页面缓存。
我使用的是流行的codeigniter php框架。
有人有什么建议吗?
创建一个cron,在命令行中进行计数,同时更新一个单独的"计数"表。因此,您将在计数表中有20个条目,所有这些条目都可以在一个查询中请求。在页面加载期间,仅查询该表。
您可以自己决定cron应该多久运行一次,但要确保它不会花费太长时间,否则只需将不同的计数更新过程分离到不同的cron文件(或命令)中。
我想它可能可以忽略不计,但在每个COUNT()查询中实际返回了多少字段?我以前听说过,使用COUNT(),实际上,使用COUNT(*)之类的东西比使用COUNT(列名)要好,因为这样数据库可以基于最快的列。
也许还值得一看CodeIgniter的数据库缓存类——这听起来正是这种有用的情况。
CodeIgniter的Profiler类对于类似的事情非常方便。如果你启用它并使用它生成的报告来了解每个查询需要多长时间,你可能至少能够优化其中的一些。
此外,您可能需要考虑使用字节码缓存-APC非常好,并且似乎可以很好地与CodeIgniter配合使用。据我所知,它不会加速实际的数据库事务,但它可能会通过加速PHP执行来加快应用程序的速度。