如果給表定義了主鍵,那么表在磁盤上的存儲結構就由整齊排列的結構轉變成了樹狀結構,也就是「平衡樹」結構,換句話說,就是整個表就變成了一個索引,這就是所謂的「聚集索引」。 這就是為什么一個表只能有一個主鍵, 一個表只能有一個「聚集索引」,因為主鍵的作用就是把「表」的數據格式轉換成「索引(平衡樹)」的格式放置。
非聚集索引和聚集索引一樣, 同樣是采用平衡樹作為索引的數據結構。假如給user表的name字段加上索引 , 那么索引就是由name字段中的值構成,在數據改變時, DBMS需要一直維護索引結構的正確性。如果給表中多個字段加上索引 , 那么就會出現多個獨立的索引結構,每個索引(非聚集索引)互相之間不存在關聯。?
非聚集索引和聚集索引的區別在于, 通過聚集索引可以查到需要查找的數據, 而通過非聚集索引可以查到記錄對應的主鍵值 , 再使用主鍵的值通過聚集索引查找到需要的數據。不管以任何方式查詢表, 最終都會利用主鍵通過聚集索引來定位到數據, 聚集索引(主鍵)是通往真實數據所在的唯一路徑。
但是也可以根據查詢的結果建立復合索引或者多字段索引查詢,為一個索引指定多個字段, 那么這個多個字段的內容都會被同步至索引之中,能加快查詢的速度。另外,復合索引的屬性順序也會影響到查詢的速度,具體較為優化的順序要根據具體數據分布。
參考鏈接:
https://www.cnblogs.com/lykbk/p/wererereredfdf.html
https://zhuanlan.zhihu.com/p/23624390?utm_source=wechat_session&utm_medium=social