select查询如何在内部检索数据?

时间:2012-10-24 07:32:40

标签: mysql

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

它包含大约800行。

我正在运行的查询就像:

select * from table order by priority limit 0,20 

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

由于

2 个答案:

答案 0 :(得分:0)

我有2条建议:

  1. 如果您创建此表并且在创建后不进行修改,则在创建和填充后执行此ALTER TABLE table ORDER BY priority。这将对您的桌子进行排序,您可以放弃订购。
  2. 不要使用mysql来订购结果。使用php即可。
  3. 也不要忘记索引。如果您没有关闭mysql结果缓存,那么所有选择都会被缓存,并且不会计算结果。所以你必须检查你的配置。阅读更多here

答案 1 :(得分:0)

你可以做3件事,数据库端& 1在实际的HTML / PHP端优化此查询:

  1. 使用ISAM表,其中'优先级'已编入索引@ http://dev.mysql.com/doc/refman/5.0/en/create-index.html&也使它尽可能小,例如'优先'SMALLINT(3)UNSIGNED ZEROFILL。 最后一点,限制,你已经有了。

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