資料庫的索引,聽起來挺神秘的,仔細想想。這些索引,其實就是平時咱們查東西時候常用的兩種手段。無非就是為了提高我們找東西的效率而已。那麼我們平時又是怎麼查東西呢?
聚集索引:
舉個例子:
比如圖書館新進了一批書。那麼這些書需要放到圖書館內。書如何放呢?一般都有乙個規則,雜誌類的放到101房間,文學類的放到102房間,理工類的放到103房間等等。這些儲存的規則決定了每本書應該放到**。而這個例子中聚集索引為書的類別。
正式因為這種儲存規則,才導致 聚集索引的唯一性。
誤區:
有的人認為,聚集索引的字段是唯一的。這是因為sql server 中新增主鍵的時候,自動給主鍵所在的字段生成乙個聚集索引。所以人們會認為聚集索引所加的字段是唯一的。
思考一下上面這個問題。雜誌類的書放到101房間。那麼如果雜誌類的書太多,乙個101房間存放不下。那麼可能101,201兩個房間來存放雜誌類的書籍。如果這樣分析的話,那麼乙個雜誌類對應多個房間。放到表儲存的話,那麼這個類別字段 就不是唯一的了。
非聚集索引:
非聚集索引,也可以從生活中找到對映。非聚集索引強調的是邏輯分類。可以說是定義了一套儲存規則,而需要有一塊控制項來維護這個規則,這個被稱之為索引表。
繼續使用上述提到的例子:
同學如果想去圖書館找一本書,而不知道這本書在**?那麼這個同學首先應該找的就是 檢索室吧。對於要查詢一本書來說,在檢索室查是乙個非常快捷的的途徑了吧。但是,在檢索室中你查到了該書在xx室xx書架的資訊。你的查詢結束了嗎?沒有吧。你僅僅找到了目的書的位置資訊,你還要去該位置去取書。
對於這種方式來說,你需要兩個步驟:
1、查詢該記錄所在的位置。
2、通過該位置去取要找的記錄。
區別:
索引與主鍵的區別
基於上述的兩種規則,那麼在什麼時候適合聚集索引,什麼時候適合非聚集索引?
聚集索引和非聚集索引
聚集索引和非聚集索引 一 聚集索引和非聚集索引 聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。聚集索引的缺點是對錶進行修改速度...
聚集索引和非聚集索引
本文引自 一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。聚集索引確定表中資料的物理順序。聚集索引類似於 簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列 組合索引 就像 簿按姓氏和名字進行組織一樣。聚集索引對於那些...
聚集索引和非聚集索引
聚集索引和非聚集索引 1 聚集索引 聚集索引,表中的資料儲存位置,根據索引的排序進行實際儲存,因此效率是相當高的。因為聚集索引決定了表中資料行的儲存位置。乙個表不可能有兩個或以上的聚集索引,如果乙個表中已經有乙個聚集索引,那麼這個表中其他的索引都將是非聚集索引。表排列順序 表記錄的排列順序與索引的排...