SQL語句中索引失效的原因
阿新 • • 發佈:2020-11-16
SQL語句中索引失效的情況。
總結如下:
1. 索引欄位進行判空查詢時。也就是對索引欄位判斷是否為NULL時。語句為is null 或is not null。
select * from 表一 where 欄位一 is null; select * from 表一 where 欄位一 is not null;
2. 對索引欄位進行like查詢時。比如:select * from SoftWareDetailInfowhere SoftUseLine like '%OQC%'。不過網上有的例子說like 'xx%'索引起作用。我沒試過。
3. 判斷索引列是否大於、小於或者不等於某個值時。
select * from 表一 where 欄位一 != 1; select * from 表一 where 欄位一 > 1; select * from 表一 where 欄位一 < 1;
4. 對索引列進行運算。這裡運算包括+-*/等運算。也包括使用函式。比如:
select * from SoftWareDetailInfo where SoftUseLine +0= 0
此時索引不起作用。
select * from SoftWareDetailInfo where count(SoftUseLine) = 0
此時索引也不起作用。
也就是說如果不是直接判斷索引欄位列,而是判斷運算或其它函式處理後的索引列索引均不起作用。
5. 複合索引中的前導列沒有被作為查詢條件。比如:Index_SoftWareDetail索引包含(a,b,c) 三列,但是查詢條件裡面,沒有a,b 列,只有c 列,那麼 Index_SoftWareDetail索引也不起作用。