优化mysql解释输出

时间:2013-02-03 12:13:53

标签: mysql sql

我刚刚运行mysql explain来检查一个查询,并惊讶地发现它必须检查超过250000条记录才能对结果进行排序,但是我有where子句索引和mysql解释给出的任何内容我完全同意添加了很多新行,所以如何解决这个问题.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条记录。因为272216记录是在用户标识2在论坛中发布后创建的,但是什么是告诉mysql只查找特定数据的解决方案,以便它可以从非常小的行集搜索结果我想要最多20-30行mysql应该搜索服务器3行

1 个答案:

答案 0 :(得分:0)

试试这个::

SELECT * from tableA  FORCE INDEX (userid) where userid=2 order by created desc limit 3