無法使用索引的select語句

轉載地址: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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章