轉載地址:http://blog.csdn.net/civilman/article/details/6557459
---無法使用索引的select語句
1.對索引列使用了函數,如:select * from tb where max(id)=100
2.對索引列使用了'%xx',如:
select * from tb where id like '%1'
需要注意的不是所有使用like關鍵字的select 語句都無法使用索引,比如
select * from tb where id like '1%'就可以使用索引
3.在where子句中對列進行類型轉換(其實也是使用到了函數)
比如錯誤的將where中的數字字符串寫成了數字(沒有加引號),即進行了類型轉化
4.在組合索引的第1列不是使用最多的列,如在下面3個查詢語句中建立組合索引,按順序包含col2,col1,id列;
select * from tb where id='1' and col1='aa'
select id,sum(col1) from tb group by id
select * from tb where id='2' and col2='bb'
則第一句和第二句無法使用到索引 所以需要注意組合索引的順序
5.在where 子句中使用in關鍵字的某些句子
當在in關鍵字後面使用嵌套的select語句,將無法使用在該列上定義的索引
如:
select
*
from
ta
where
id
in
(select id from tb where ....)
--這樣可以用到索引
select * from tb where id in('1','2')