1. 程式人生 > 實用技巧 >SQL語句中索引失效的原因

SQL語句中索引失效的原因

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  欄位一 != 1select * from 表一 where  欄位一 > 1select * 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索引也不起作用。