0

我有一个 mysql 内存表,其中包含分配给每一行的优先级。我每 2 分钟创建一次这个表,这个表被调用几乎 100 次/秒。

它包含大约 800 行。

我正在运行的查询是这样的:

select * from table order by priority limit 0,20 

the order by我想优化这个查询。我可以在创建表时按排序顺序放置数据,并且可以假设如果我删除子句,提取的数据将始终根据优先级排序。

谢谢

4

2 回答 2

0

我有两个建议:

  1. 如果您创建此表并且在创建后不修改,则在创建和填充后执行此操作ALTER TABLE table ORDER BY priority。这将对您的桌子进行排序,您可以放弃订购。
  2. 不要使用 mysql 对结果进行排序。为它使用php

也不要忘记索引。如果您没有关闭 mysql 结果缓存,那么您的所有选择都将被缓存并且不计算结果。所以你必须检查你的配置。在这里阅读更多

于 2012-10-24T07:39:15.207 回答
0

您可以在数据库端做 3 件事,在实际的 HTML/PHP 端做 1 件事来优化这个查询:

  1. 使用带有“优先级”索引的 ISAM 表 @ http://dev.mysql.com/doc/refman/5.0/en/create-index.html并使其尽可能小,例如“优先级”SMALLINT(3) UNSIGNED清零。最后一点,限制,你已经得到了。

  2. 使用操作码缓存器缓存结果并将它们直接传递到人们的浏览器,如果信息只是经常更改,而不需要重新查询数据库,例如http://en.wikipedia.org/wiki/List_of_PHP_accelerators

于 2012-10-24T07:47:33.513 回答