mysql索引 回表 記錄下mysql索引以及回表

2021-10-17 20:00:52 字數 798 閱讀 3068

mysql資料庫的innodb引擎所有的表都預設建立在索引之上的,也就是聚集索引,而主鍵就是聚集索引,所以主鍵只能建乙個。普通索引也就是非聚集索引,可以多個。 索引的資料結構是b+樹也就是平衡樹。查詢資料的時候根據索引查詢資料所在位置然後取到資料。查詢普通索引的時候是先根據普通索引找到主鍵再根據主鍵定位到資料,也就是資料是和主鍵一起儲存的。

我們知道計算機磁碟io是非常高昂的操作,所以優化後的磁碟io是有預載入的,也就是讀到哪條資料把附近的資料也一塊讀了,就是page。而b+樹的結構,隨便找了個圖看看。從索引定位資料,最理想的是第一讀載入page時就把索引全拿到記憶體裡了,直接定位到資料這樣就非常快了。然後實際情況不可能如此,但是你也可以想到盡量載入多的索引資料也挺好的,這也是為什麼資料都放到葉子節點,與索引比資料太大了。這是從索引到拿到資料的乙個簡單點的描述。那普通索引是怎麼工作的吶?首先查詢方式是一樣的,只不過普通索引找到的葉子有索引欄位和聚集索引,在通過聚集索引找到葉子資料。多了乙個過程而已。

回表是什麼?通常資料量大的時候回表是災難性的,比如說人員表裡有學號、姓名、年齡等字段,學號是主鍵,姓名上也建了普通索引,你如果查詢查詢name欄位,通過name索引就拿到了,而如果在加個age吶?你要在根據主鍵定位資料拿到age欄位資料,這個過程就是回表。這時候就要考慮聯合索引了。索引使用原則什麼的就不說了,簡單寫寫記錄下遇到具體問題順著這個思路查查。

記錄下mysql索引以及回表

mysql資料庫的innodb引擎所有的表都預設建立在索引之上的,也就是聚集索引,而主鍵就是聚集索引,所以主鍵只能建乙個。普通索引也就是非聚集索引,可以多個。索引的資料結構是b 樹也就是平衡樹。查詢資料的時候根據索引查詢資料所在位置然後取到資料。查詢普通索引的時候是先根據普通索引找到主鍵再根據主鍵定...

誤刪除表記錄,閃回恢復

今天有個同事突然來找我,說他忘記注釋乙個表,刪除了4000多條記錄。把他給嚇的,說句實話當時我也嚇了一跳,不過想到庫是開著閃回的,而且是剛刪除,所以還有救。下面是我的操作過程 1 檢視當前表的記錄條數 select count from u.t 返回結果為449 2 查詢刪除前的記錄條數 selec...

mysql索引框架 MySQL架構和MySQL索引

1.mysql架構 1.1邏輯架構圖 1.1.1connection pool 連線池 管理緩衝使用者連線,執行緒處理等需要快取的需求。負責監聽對mysql server的各種請求,接收連線請求,所有連線請求到執行緒管理模組。每乙個連線上mysql server的客戶端請求都會被分配 或建立 乙個連...