0

我刚刚运行 mysql explain 来检查一个查询,并惊讶地发现它必须检查超过 250000 条记录才能对结果进行排序,但是我有 where 子句的索引以及 mysql explain 给出的任何内容,我完全同意这么多新行已经添加所以如何解决这个问题.mysql表结构是

 tableA is a forum where users can post the content 

  id         userid       created       title

  1          3            12232         xyz
  2          etc...............

我的mysql查询是

  explain SELECT * from tableA   where userid='2' order by created desc limit 3

这个解释查询的输出是

  id    select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
  1     SIMPLE  tableA  ref     userid  userid  4   const   275216  Using where; Using temporary; Using filesort

我担心的是如何将其减少到 3-4,因为我只对显示三个结果感兴趣,但 mysql 在显示输出之前正在搜索 275216 条记录。由于在用户 ID 2 在论坛上发布后创建了 275216 条记录,但是告诉 mysql 只查找特定数据的解决方案是什么,以便它可以从非常小的行集中搜索结果我希望最多 20-30 行 mysql 应该搜索到服务器 3 行

4

1 回答 1

0

尝试这个::

SELECT * from tableA  FORCE INDEX (userid) where userid=2 order by created desc limit 3
于 2013-02-03T12:20:49.923 回答