sql server資料庫中索引失效的問題討論

來源:互聯網
上載者:User

標籤:des   使用   sp   資料   問題   bs   nbsp   資料庫   sql   

有關於資料庫中索引失效的問題,網上也有相關的討論。不過他們是針對oracle資料庫進行討論的。那麼在sql server資料庫中索引什麼時候

會失效呢。總結了一下,不過我沒有經過測試。沒測試就沒有發言權,這裡僅供自己參考。

首先,所謂失效。並不真的就是這個索引被刪除了。而是在這些情況下,DBMS不會檢索索引列表了。執行速度和沒有這個索引時的速度一樣。

但是再執行另外的一條語句。同樣索引可以正常起作用。所以索引的失效是針對某條sql語句的,而不是針對索引本身的。那麼在哪些情況下,

確切的說是在哪類語句執行時索引不起作用呢。總結如下:

1.索引欄位進行判空查詢時。也就是對索引欄位判斷是否為NULL時。語句為is null 或is not null。
  比如:select * from temp where time is null此時就不檢索time欄位上的索引表了。也就是索引在這條語句執行時失效了。接著再執

行select * from temp where time = ‘2010-06-01‘此時就會檢索索引表了。索引又起作用了。


2.對索引欄位進行like查詢時。比如:select * from temp where des like ‘%王某某‘。網上有的例子說like ‘xx%‘索引起作用。我沒試過。

3.判斷索引列是否不等於某個值時。‘!=’操作符。比如:select * from temp where amount != 0.

4.對索引列進行運算。這裡運算包括+-*/等運算。也包括使用函數。比如:
  select * from temp where amount+count>10 此時索引不起作用。
  select * from temp where round(amount)>10 此時索引也不起作用。
 也就是說如果不是直接判斷索引欄位列,而是判斷運算或其它函數處理後的索引列。索引均不起作用。

sql server資料庫中索引失效的問題討論

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.