表:
CREATE TABLE test(id INT,a INT,b INT,c INT,d INT,e INT)ENGINE=MYISAM;sql如下:SELECT id,a,b,c,d FROM test
WHERE a= 
and b=
ORDER BY c 
LIMIT 100;SELECT id,a,b,c,d FROM test
WHERE a= 
and b=
ORDER BY d 
LIMIT 100;SELECT id,a,b,c,d FROM test
WHERE a= 
and b=
ORDER BY e 
LIMIT 100;
如何建立合适的索引呢?我的做法是建立
CREATE idx_b_c ON test(a,b,c);
CREATE idx_b_c ON test(a,b,d);
CREATE idx_b_c ON test(a,b,e);
这样的三个索引。但是觉得有点不适合。。
太多索引了,有什么其他的方法吗

解决方案 »

  1.   

    EXPLAIN 你的SQL语句,根据情况不同,强制使用不同的索引
      

  2.   

    建立第一个索引,第一个sql 是ok的,第二第三个是要文件排序了,情况就是这样;
    是不是要针对这3种情况,建立三种索引?
      

  3.   

    如果a或者b足够散列  那么在a或者b上建立一个索引就足够了如果a b重复数据很多,那么你的方法查询起来最快,但是插入的速度可能会因此受到影响