我的mysql MyISAM表查询SQL:where f1=xxx group by f2 order by f3涉及到f1,f2,f3都是int型的,该如何建立索引呢?我试了f1,f2,f3的组合索引,explain确实也用到了,但是查询速度仍然很慢,30w的数据大概要500ms左右,但是不要group by之后就只有50ms,请问有更好的索引策略吗?

解决方案 »

  1.   

    create index xxx on MyISAM表(f1,f2)
      

  2.   


    查询SQL为:WHERE f1=xx GROUP BY f2 的时候速度很快,但是加上ORDER BY f3之后又慢下来,也是500ms左右,同样如果是(f1,f3)的索引组合 SQL为:WHERE f1=xxx ORDER BY f3,也就是去掉GROUP BY之后速度也很快。不知道这是达到MYSQL的极限了吗?
      

  3.   

    create index a on myISAM表(f1,f2);
      

  4.   


    CREATE INDEX ix_tablename_f1_f2 ON temp (f1,f2);