一个表 有个联合索引emp_no,title,from_date 1  
     1.1  SELECT * FROM tbl WHERE   title ='Senior'  and  emp_no < '10001' //这里使用到了最左前缀的emp_no索引
     1.2  SELECT * FROM tbl WHERE   title ='Senior'  and  emp_no like '10001' //这里没有使用到索引同样都是范围查询 为什么第二个没有使用emp_no索引?2 
     2.1SELECT * FROM tbl
WHERE emp_no BETWEEN '10001' AND '10010'
AND title='Senior Engineer'
AND from_date BETWEEN '1986-01-01' AND '1986-12-31';用到了所有索引
     2.2
 
SELECT * FROM tbl
WHERE emp_no BETWEEN '10001' AND '10010' 
AND title='Senior Engineer'
AND from_date > '1986-01-01' AND from_date<'1986-12-31';只用到emp_no的索引为什么?  第二个的title怎么没用到?

解决方案 »

  1.   

    贴出你的 
    explain SELECT * FROM tbl WHERE   title ='Senior'  and  emp_no < '10001' ;explain SELECT * FROM tbl WHERE   title ='Senior'  and  emp_no like '10001'
      

  2.   

    MYSQL一次只会用一个索引。不可能用到所有索引。
      

  3.   

    贴出EXPLAIN 和SHOW INDEX FROM TBL;
      

  4.   

    MYSQL在有多个索引可以选择的时候,优化器会选择一个它认为最有效率的索引,也有可能会用到2个索引,就是索引合并。把你的EXPLAIN贴出来看看。
      

  5.   

    索引信息:
    1 explain:
    2 explain: