中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中聚簇索引與非聚簇索引的區別是什么

發布時間:2020-06-28 18:28:54 來源:億速云 閱讀:343 作者:元一 欄目:MySQL數據庫

mysql中聚簇索引與非聚簇索引的區別是什么?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

通常情況下,建立索引是加快查詢速度的有效手段。但索引不是萬能的,靠索引并不能實現對所有數據的快速存取。事實上,如果索引策略和數據檢索需求嚴重不符的話,建立索引反而會降低查詢性能。因此在實際使用當中,應該充分考慮到索引的開銷,包括磁盤空間的開銷及處理開銷(如資源競爭和加鎖)。例如,如果數據頻繁的更新或刪加,就不宜建立索引。

mysql聚簇索引和非聚簇索引的介紹:

聚簇索引:

  • 表數據按順序存儲,即索引順序和表記錄物理存儲順序一致。

  • 聚簇索引 葉子節點存儲數據行和B-Tree索引。

  • 在一個表中只能有一個聚簇索引,因為真實物理存儲順序只能有一種。

  • 聚簇索引是稀疏索引,數據頁上一級索引存儲是頁指針,非行指針。

非聚簇索引:

  • 表數據存儲順序與索引順序無關。

  • 對于非聚簇索引,葉節點包含行主鍵值和主鍵值作為指向行的“指針”,通過二級索引查找,兩次B-Tree查找 InnoDB自適應哈希索引能夠減少這樣重復工作。

  • 非聚簇索引是密集索引,在數據頁的上一級索引頁它為每一個數據行存儲一條記錄。

  • 存儲特點:
  1. 1、聚集索引。表數據按照索引的順序來存儲的,也就是說索引項的順序與表中記錄的物理順序一致。對于聚集索引,葉子結點即存儲了真實的數據行,不再有另外單獨的數據頁。 在一張表上最多只能創建一個聚集索引,因為真實數據的物理順序只能有一種。
  2. 2、非聚集索引。表數據存儲順序與索引順序無關。對于非聚集索引,葉結點包含索引字段值及指向數據頁數據行的邏輯指針,其行數量與數據表行數據量一致。

總結一下:聚集索引是一種稀疏索引,數據頁上一級的索引頁存儲的是頁指針,而不是行指針。而對于非聚集索引,則是密集索引,在數據頁的上一級索引頁它為每一個數據行存儲一條索引記錄。

  • 更新表數據:

1、向表中插入新數據行
   如果一張表沒有聚集索引,那么它被稱為“堆集”(Heap)。這樣的表中的數據行沒有特定的順序,所有的新行將被添加到表的末尾位置。而建立了聚簇索引的數據表則不同:最簡單的情況下,插入操作根據索引找到對應的數據頁,然后通過挪動已有的記錄為新數據騰出空間,最后插入數據。如果數據頁已滿,則需要拆分數據頁,調整索引指針(且如果表還有非聚集索引,還需要更新這些索引指向新的數據頁)。而類似于自增列為聚集索引的,數據庫系統可能并不拆分數據頁,而只是簡單的新添數據頁。

2、從表中刪除數據行

對刪除數據行來說:刪除行將導致其下方的數據行向上移動以填充刪除記錄造成的空白。如果刪除的行是該數據頁中的最后一行,那么該數據頁將被回收,相應的索引頁中的記錄將被刪除。對于數據的刪除操作,可能導致索引頁中僅有一條記錄,這時,該記錄可能會被移至鄰近的索引頁中,原索引頁將被回收,即所謂的“索引合并”。

關于mysql中聚簇索引與非聚簇索引的區別是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延寿县| 扶绥县| 宁国市| 德化县| 布尔津县| 乌海市| 邵武市| 旌德县| 青冈县| 宜兴市| 怀安县| 琼海市| 阜城县| 高陵县| 田林县| 新巴尔虎右旗| 普洱| 南昌县| 都江堰市| 南漳县| 和硕县| 沾化县| 叶城县| 依安县| 嘉鱼县| 绥江县| 密山市| 尚志市| 新沂市| 廊坊市| 阿拉善右旗| 肇州县| 任丘市| 玛多县| 从化市| 嘉祥县| 绿春县| 会昌县| 大宁县| 垣曲县| 错那县|