-4

我有一个需要 12 秒才能加载的页面!

该页面需要显示由 SQL 计数查询生成的 20 条不同的数据项。

由于 SQL 每次都不同,因此无法组合查询。

我已经尝试索引相关表,但无济于事......

我还考虑过实现 memcache 和使用页面缓存。

我正在使用流行的 codeigniter php 框架。

有没有人有什么建议 ?

4

2 回答 2

0

我想它可能可以忽略不计,但是您实际上在每个 COUNT() 查询中返回了多少字段?我过去听说过使用 COUNT(),实际上使用 COUNT(*) 之类的东西比使用 COUNT(columnname) 更好,因为这样数据库可以将它基于任何最快的列。

可能还值得看看 CodeIgniter 的数据库缓存类——这听起来正是那种有用的情况。

CodeIgniter 的 Profiler 类对于这样的事情真的很方便。如果您启用它并使用它生成的报告来了解每个查询需要多长时间,您可能至少可以优化其中的一些。

此外,您可能需要考虑使用字节码缓存 - APC 非常好,并且似乎与 CodeIgniter 配合得很好。据我所知,它不会加速实际的数据库事务,但它可能会通过加速 PHP 执行来使应用程序更快。

于 2012-08-21T15:16:15.553 回答
0

创建一个在命令行中进行计数的 cron,同时更新一个单独的“计数”表。因此,您将在 counts 表中有 20 个条目,您都可以在一个查询中请求这些条目。在页面加载期间仅查询该表。

您可以自己决定 cron 应该多久运行一次,但要确保它不会花费太长时间,否则只需将不同的 count-update-process 分成不同的 cron 文件(或命令)。

于 2012-08-21T08:23:42.163 回答