主鍵為聯合主鍵時,索引B+樹結構
根據下面建表語句,分析各個索引的結構組織:
CREATE TABLE `geek` (
`a` int(11) NOT NULL,
`b` int(11) NOT NULL,
`c` int(11) NOT NULL,
PRIMARY KEY (`a`,`b`),
KEY `c_index` (`c`),
KEY `ca_index` (`c`,`a`),
KEY `cb_index` (`c`,`b`)
) ENGINE=InnoDB;
主鍵(a,b)的索引結構:
主鍵 a,b 的聚簇索引組織順序相當於 order by a,b ,也就是先按 a 排序,再按 b 排序,c 無序。
ca_index的索引結構:
索引 ca_index的組織是先按 c 排序,再按 a 排序,同時記錄主鍵。**注意:**這裡主鍵記錄的欄位是b,而不是(a,b)。
c_index的索引結構:
與ca_index一樣,先按c排序,再按a排序,主鍵部分記錄的是b。
cb_index的索引結構:
先按c排序,在按b排序,主鍵部分記錄的是a。
可以看出,上面的建表語句中的ca_index其實沒有必要,因為它與c_index的結構完全一樣。
參考:
《MySQL實戰45講》
相關文章
- 在已存在的表結構上新增主鍵、外來鍵、聯合主鍵、聯合索引的例子索引
- 主鍵與主鍵索引的關係索引
- oracle 聯合主鍵學習Oracle
- 主鍵、自增主鍵、主鍵索引、唯一索引概念區別與效能區別索引
- [精]mysql聯合主鍵應用MySql
- Oracle主鍵與複合主鍵的效能分析Oracle
- MySQL為什麼採用B+樹作為索引結構?MySql索引
- Mysql索引資料結構為什麼是B+樹?MySql索引資料結構
- ClickHouse主鍵索引最佳實踐索引
- 資料表設計之主鍵自增、UUID或聯合主鍵UI
- 為什麼選擇b+樹作為儲存引擎索引結構儲存引擎索引
- 注意:Oracle中的聯合主鍵查詢問題(轉)Oracle
- mysql刪除主鍵索引,刪除索引語法MySql索引
- Mysql關於自增主鍵,自增主鍵優化總結MySql優化
- indexedDB 索引與primarykey主鍵區別Index索引
- 主鍵和唯一索引的區別索引
- Oracle刪除主鍵保留索引的方法Oracle索引
- Oracle主鍵、唯一鍵與唯一索引的區別Oracle索引
- 主鍵索引 (聚集索引) 和普通索引 (輔助索引) 的區別索引
- Oracle主鍵Oracle
- 主鍵命名
- MySQL 聚簇索引一定是主鍵嗎MySql索引
- SQLSERVER 的主鍵索引真的是物理有序嗎?SQLServer索引
- 主鍵local索引、unique local索引、分割槽索引順序的理解索引
- MySQL索引為什麼使用B+樹?MySql索引
- UPDATE 時主鍵衝突引發的思考(連結)
- 不要使用業務鍵作為資料庫主鍵資料庫
- java主鍵生成Java
- 主鍵分類
- hibernate複合主鍵查詢問題
- 『提問』聯合主鍵(compsite-id)所引起的問題
- cqrs架構下的主鍵如何生成架構
- 資料結構之「B+樹」資料結構
- 一條主鍵索引SQL導致的CPU被打滿索引SQL
- mysql 關於主鍵索引--節選丁奇部落格MySql索引
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- 分散式主鍵生成分散式
- postgresql自增主鍵SQL