SQL SERVER索引

來源:互聯網
上載者:User

標籤:

什麼是索引

 

資料庫索引是對錶的一列或多列的值進行排序的一種結構,索引與表資料的關係類似於目錄與書籍內容的關係。在SQL-Server中存在兩種比較重要的索引,分別為叢集索引與非叢集索引,它們是以B+樹組織儲存的。

 

為什麼要使用索引

 

資料查詢是資料庫一項使用非常頻繁的操作,查詢的快慢已成為了衡量系統好壞的一個重要標準,而合理地使用索引可以提高資料檢索效率,改善資料庫效能,加快資料訪問速度。

  1. 預讀:用估計資訊,去硬碟讀取資料到緩衝。預讀100次,也就是估計將要從硬碟中讀取了100頁資料到緩衝。
  2. 物理讀:查詢計劃產生好以後,如果緩衝缺少所需要的資料,讓緩衝再次去讀硬碟。物理讀10頁,從硬碟中讀取10頁資料到緩衝。
  3. 邏輯讀:從緩衝中取出所有資料。邏輯讀100次,也就是從緩衝裡取到100頁資料。
叢集索引

 

叢集索引確定表中資料的物理順序。叢集索引類似於電話簿,後者按姓氏排列資料。由於叢集索引規定資料在表中的實體儲存體順序,因此一個表只能包含一個叢集索引。但該索引可以包含多個列(複合式索引),就像電話簿按姓氏和名字進行組織一樣。

 

叢集索引對於那些經常要搜尋範圍值的列特別有效

如果一個表沒有叢集索引,那麼它是以堆的方式儲存,也就是表中的資料沒什麼順序的。否則假如我們為表建立了叢集索引,那麼其儲存是有順序的

 

叢集索引的最大好處就是能夠根據查詢要求,迅速縮小查詢範圍,避免全表掃描

非叢集索引

 

其實,我們的漢語字典的本文本身就是一個叢集索引,比如,我們要查"安"字,就會很自然的翻開字典的前幾頁,因為"安"的拼音是"an",而按照拼音排序漢字的字典是以英文字母"a"開頭並以"z"結尾的,那麼"安"子就自然的排在字典的前部。如果您翻完了所有以“a”開頭的部分仍然找不到這個字,那麼就說明您的字典中沒有這個字;同樣的,如果查“張”字,那您也會將您的字典翻到最後部分,因為“張”的拼音是“zhang”。也就是說,字典的本文部分本身就是一個目錄,您不需要再去查其他目錄來找到您需要找的內容。我們把這種本文內容本身就是一種按照一定規則排列的目錄稱為“叢集索引”。

   如果您認識某個字,您可以快速的從自動中查到這個字。但您也可能會遇到不認識的字,不知道它的發音,這時候,就不能按照剛才的方法來查字,而需要根據"偏旁部首"來查,我們把這種目錄純粹是目錄,本文純粹是本文的排序方式稱為“非叢集索引”。

 

SQL SERVER預設是在主鍵上建立叢集索引

 

一個簡單的例子說明主鍵建立彙總索引的劣勢

 

(1)僅在主鍵上建立叢集索引,並且不劃分時間段:
    Select gid,fariqi,neibuyonghu,title from tgongwen
    用時:128470毫秒(即:128秒)


    (2)在主鍵上建立叢集索引,在fariq上建立非叢集索引:
    select gid,fariqi,neibuyonghu,title from Tgongwen
    where fariqi> dateadd(day,-90,getdate())
    用時:53763毫秒(54秒)


    (3)將彙總索引建立在日期列(fariqi)上:
    select gid,fariqi,neibuyonghu,title from Tgongwen
    where fariqi> dateadd(day,-90,getdate())
    用時:2423毫秒(2秒)

 

雖然每條語句提取出來的都是25萬條資料,各種情況的差異卻是巨大的,特別是將叢集索引建立在日期列時的差異。事實上,如果您的資料庫真的有1000 萬容量的話,把主鍵建立在ID列上,就像以上的第1、2種情況,在網頁上的表現就是逾時,根本就無法顯示。這也是我摒棄ID列作為叢集索引的一個最重要的因素。得出以上速度的方法是:在各個select語句前加:


    declare @d datetime
    set @d=getdate()
    並在select語句後加:
    select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate())

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.