- 聚集索引
- 用法舉例
- 小明需要查找一個人的姓名,知道他在公司的營銷部門的1010辦公室的4號座位、這個時候如果需要專門為小明建一個聚集索引表就是,以公司部門表內部門名稱排序,再以房間總表序號排序,最后以房間詳細表的座位表排序,這樣就可以最快的找到他要找的人
- 聚集索引類似於一個字典,我們知道拼音來尋找字,首先我們知道字音節的首字母,從按a-z排序的字典中找到這個字首字母所在的區域,再從這個區域找到韻母所在的區域,當然韻母在字典中也有順序,最后就可以找到我們想要的字了
- 注意事項
- 限制原則
- 每個表只能有一個聚集索引,但是可以添加多個用以排序的列,但是這樣明顯效率是比較低下的,相當於增加了索引的長度,但是這樣能夠保證別人可以在知道其他額信息時也能夠找到這個人的信息
- 數據管理員應該精益求精,過多的不適合的索引會引起索引碎片,每新建一個索引也會增加系統的資源占用
- 使用聚集索引的情況
- 包含大量非重復的列
- 使用運算符》《》=》=《= 返回一個范圍值的查詢
- 被連續訪問的列
- 返回大量結果集的查詢
- 經常被用來連接或者groupby的列,一般來說時外鍵,使用這些列進行索引的時候,sqlsever可以不再對表進行排序,節省時間
- 聯機事務處理需要快速查找單行的結果,這個時候會用到使用主鍵創建的聚集索引
- 限制原則
- 用法舉例
- 非聚集索引
- 用法舉例
- 小明需要找一個人的姓名,知道她在公司的營銷部門 的1010辦公室的4號座位,這個時候由於沒有聚集索引,所以使用了前台的非聚集索引查詢這個人的位置
- 查字典一樣,如果我們使用的是筆畫查詢,這樣可以直接在前面查詢到這個字,然后根據這個字的頁碼找到這個字
- 注意事項
- 一個表可以有多個非聚集索引,非聚集索引只是在一個表內建立了索引與數據項的連接,不影響數據結構和內容
- 使用非聚集索引的情況
- 包含大量非重復值的列
- 不返回大型結果集
- 返回精確匹配查詢時經常使用的列
- 經常需要使用連接和分組的決策支持軟件,在使用麗娜姐和分組的列上聲明多個非聚集索引,在每個外鍵上面使用聚集索引
- 在一個查詢中覆蓋所有的列,會消除對於表或者聚集索引的訪問
- 用法舉例