彙集索引:一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。數據庫
CREATE CLUSTERED INDEX CLUSTER_ID ON TABLE_NAME(ID)性能
非彙集索引:一種索引,該索引中索引的邏輯順序與磁盤上行的物理存儲順序不一樣。優化
CREATE NONCLUSTERED INDEX NONCLUSTER_ID ON TABLE_NAME(ID)spa
拿新華字典查字打比方。彙集索引,至關於按拼音檢索,而非彙集索引至關於按部首檢索。按拼音檢索說明這個字你已認識,直接到指定的位置便可查到,不須要全文檢索。按部首檢索說明你對這個字不認識,須要根據他的偏旁部首進行全文檢索纔可查到。索引
SqlServer默認是在主鍵上創建彙集索引的。有的人把表步長爲1自動增大的ID列做爲主鍵被默認了彙集索引,可是這麼作意義是不大的。彙集索引最大的好處是可根據查詢要求,迅速縮小查詢範圍,避免了全表掃描,很難在實踐中用ID做爲查詢條件來進行查詢,這就使得ID號爲主鍵作彙集索引,成爲了一種資源的浪費!要知道一張表是隻能創建一個彙集索引規則的,這使得它變得很是珍貴。一樣的字段上加彙集索引和非彙集索引,查詢的速度但是天壤之別的,並不是在任何字段上簡單的創建索引就能提升查詢速度。創建適當的彙集索引對於咱們提升查詢速度是極其重要的。資源
【索引相關知識】it
1.彙集索引字段的字節數越小,索引的速度就會越快。
2.彙集索引很寶貴一個表只能建一個,彙集索引很重要會影響到與之關聯的非彙集索引。
3.在建立索引時,能夠爲這個索引指定一個填充因子,以便在索引的每一個葉級頁面上保留必定百分比的空間,未來數據能夠進行擴充和減小頁分裂。填充因子是從0到100的百分比數值,設爲100時表示將數據頁填滿,只有當不會對數據進行更改時(例如只讀表中)才用此設置。值越小則數據頁上的空閒空間越大,這樣能夠減小在索引增加過程當中進行頁分裂的須要,但這一操做須要佔用更多的硬盤空間。當填充因子的值爲50時,數據庫的讀取性能會下降兩倍。
4.填充因子(FillFactor):指定SqlServer存儲索引數據時每一個索引的充滿程度。用戶指定的fillfactor取值範圍從1到100.住過沒有指定fillfactor,則默認爲0。
優勢:減小了頁面分裂的次數。
缺點:增大了使用的存儲空間。
5.重建索引:可減小請求數據所需的頁數來提升性能。
(1)在執行INSERT、UPDATE、DELETE語句以後,會使得索引數據散亂在數據庫存儲空間內。
(2)重建索引以優化索引結構
(3)DBCCDBREINDEX(表名,索引名,填充因子)
(4)注:可減小請求數據所需的頁數來提升性能date
dbcc dbreindex(表名、索引名、填充因子)
bdcc dbreindex(tb)
dbcc showconfig(tb):查看索引分頁狀況
6.在查詢中強制使用索引,select * from tb with(index=tb_index) where datetime='2017-03-10'select