mysql索引底層B+樹

B+樹勝出的關鍵特性:

矮胖樹結構:3-4層高度即可存儲2000萬條記錄(假設每頁存1000條)
葉子鏈表:所有數據存儲在葉子節點,并通過雙向鏈表連接
非葉導航:非葉子節點僅存儲鍵值,不保存數據,提升節點容量
2. 實戰案例:索引如何加速查詢?
2.1 案例1:超市儲物柜系統
2.1.1 場景描述
表結構:2000個儲物柜,字段包括柜號(主鍵)、手機號、使用時間等。
高頻查詢:用戶通過手機號查找柜號(SELECT * FROM lockers WHERE phone='13812345678')。
2.1.2 無索引的代價
全表掃描2000條數據,平均需訪問1000次磁盤頁(假設每頁20條記錄)。
2.1.3 創建索引后的優化
CREATE INDEX idx_phone ON lockers(phone); ?
查詢過程:
從根節點定位手機號138所在的頁。
中間層定位到1381234的分支。
葉子層找到13812345678對應的柜號。
根據柜號直接訪問目標數據頁。
磁盤I/O次數:3次(樹高3層) vs 全表掃描的100次。
2.2 案例2:醫院叫號系統的聯合索引
2.2.1 聯合索引設計
ALTER TABLE patients ADD INDEX idx_dept_status_time(department, status, register_time); ?
最左前綴原則:
有效查詢:WHERE department='心血管科' AND status='待就診'(使用前兩列)。
無效查詢:WHERE status='待就診'(跳過第一列,觸發全表掃描)。
2.2.2 索引覆蓋優化
SELECT id, department FROM patients WHERE department='心血管科'; ?
若索引包含所有查詢字段,直接返回索引數據,無需回表。
3. 索引設計與避坑指南
3.1 設計原則
三星索引標準:

一星:WHERE條件匹配索引列。
二星:ORDER BY/GROUP BY使用索引排序。
三星:SELECT字段全部在索引中。
選擇性原則:

優先為區分度高的列建索引(如性別字段區分度低,手機號區分度高)。
計算公式:選擇性 = 不同值數量 / 總行數。
3.2 常見陷阱
1. 隱式類型轉換
SELECT * FROM users WHERE phone = 13812345678; -- phone為varchar類型 ?
導致索引失效,需強制轉換:WHERE phone = '13812345678'。
2. 函數操作破壞索引
SELECT * FROM orders WHERE DATE_FORMAT(create_time,'%Y-%m')='2025-03'; ?
改寫為范圍查詢:WHERE create_time >= '2025-03-01' AND create_time < '2025-04-01'。
4. 進階:索引的底層維護
4.1 頁分裂與合并
插入觸發頁分裂:當葉子頁已滿時,分裂為兩個頁,父節點新增指針。
刪除觸發頁合并:當頁利用率低于閾值時,合并相鄰頁并更新指針。
4.2 索引統計信息
MySQL定期更新 INDEX_STATISTICS,優化器根據數據分布選擇索引。
手動更新命令:ANALYZE TABLE patients;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92688.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI開放課堂:釘釘MCP開發實戰

我們正處在AI技術爆發的時代&#xff0c;也處于企業數字化蓬勃發展的時代。如何利用AI技術&#xff0c;突破模型自身知識的局限&#xff0c;安全、高效地與外部世界連接和交互&#xff0c;是當前所有AI開發者在企業數字化中面臨的問題之一。 MCP&#xff08;Model Context Prot…

DigitalOcean 一鍵模型部署,新增支持百度開源大模型ERNIE 4.5 21B

使用過DigitalOcean GPU Droplet 服務器的用戶應該對我們的一鍵模型部署功能不陌生。DigitalOcean 的一鍵模型部署 (1-Click Models) 功能是 DO 為開發者和企業提供的一種便捷方式&#xff0c;用于快速部署和運行預訓練的生成式 AI 模型&#xff0c;尤其是大型語言模型 (LLM)。…

【嵌入式面試】嵌入式筆試與面試寶典(offer必來)

&#x1f48c; 所屬專欄&#xff1a;【嵌入式面試】 &#x1f600; 作??者&#xff1a;蘭舟比特 &#x1f43e; &#x1f680; 個人簡介&#xff1a;熱愛開源系統與嵌入式技術&#xff0c;專注 Linux、網絡通信、編程技巧、面試總結與軟件工具分享&#xff0c;持續輸出實用干…

企業級數據分析創新實戰:基于表格交互與智能分析的雙引擎架構

引言&#xff1a;數字化轉型中數據協同困境與系統融合挑戰 在數字化轉型實踐中&#xff0c;企業普遍面臨數據系統與業務運營的協同困境&#xff0c;主要表現為數據處理平臺與核心業務流程的架構隔離、分析成果與決策閉環的價值斷層、以及雙重數據維護帶來的資源損耗。這種系統…

openbmc 日志系統繼續分析

1.說明 1.1 總體說明 本節是繼: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的繼續分析的文檔。 該篇內容主要目的是分析整個openbmc的日志系統。 注意解讀文檔: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它進行bug管理】

JIRA小白如何使用它進行bug管理 提示&#xff1a;入職一般來說&#xff0c;公司會提供賬號&#xff0c;不需要部署如何提bug&#xff1a; JIRA有兩種提交方式 在執行測試用例中在bug管理項目中新建提bug建議或者注意事項&#xff1a; 標題&#xff1a;執行完A之后&#xff0c;發…

陪診小程序系統開發:開啟醫療陪護新時代

在快節奏的現代生活中&#xff0c;人們面臨著各種各樣的壓力&#xff0c;健康問題也日益凸顯。當生病就醫時&#xff0c;尤其是對于老年人、孕婦、殘障人士等特殊群體&#xff0c;獨自前往醫院往往會遇到諸多困難&#xff0c;如不熟悉醫院流程、行動不便、心理上感到孤獨無助等…

Leetcode—1035. 不相交的線【中等】

2025每日刷題&#xff08;214&#xff09; Leetcode—1035. 不相交的線最長公共子序列長度&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09; 給定兩個序列&#xff08;如字符串或數組&#xff09;&#xff0c;最長公共子序列&#xff08;LCS&#xff09;是同…

使用 Conda 工具鏈創建 UV 本地虛擬環境全記錄——基于《Python 多版本與開發環境治理架構設計》

Python 多版本環境治理理念驅動的系統架構設計&#xff1a;三維治理、四級隔離、五項自治 原則-CSDN博客 Python 多版本與開發環境治理架構設計-CSDN博客 【終極實戰】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具協同 AnacondaPyCharm&#xff1a;構建 Python 全版本棧隔離…

一文通透mamba2「力證Transformer are SSM」:從SSM、半可分矩陣、SMA、SSD到mamba2

前言 實話說&#xff0c;過去一兩月一直忙著我司兩大類項目的推進 一類是正在逐一上線基于大模型的論文翻譯、論文審稿、論文對話、論文修訂/潤色、論文idea提煉等等(截止到24年8月底&#xff0c;其中的審稿和翻譯已上線七月官網 )一類是正在抓緊做面向一個個工廠的具身智能機…

【Java基礎06】ArrayList

文章目錄1.ArrayList1.1 集合的基本使用1.2 集合的創建和成員方法1.3 練習一&#xff1a;集合的遍歷基本數據類型對應的包裝類1.4 練習二&#xff1a;使用集合存儲并遍歷學生對象1.4 練習三&#xff1a;添加用戶對象并判斷是否存在寫方法要思考的步驟1.5 練習四&#xff1a;添加…

ddos 放在多個云主機,同時運行

1. 起因&#xff0c; 目的: 我打開 grok, 被 cloudflare 攔截&#xff0c;問我是不是機器人。 這個情況&#xff0c;如果是別的小網站也就算了&#xff0c;很正常。 大公司也搞這種東西&#xff0c;要么是偷懶&#xff0c;要么是太小氣了。 一氣之下&#xff0c;我決定寫個 ddo…

lspci/setpci用法小結

目錄 1.lspci用法小結 2.lspci -t 3.setpci用法小結 1.lspci用法小結 參考博客&#xff1a;【PCIe】lspci用法小結 - 知乎 lspci是一個用來顯示系統中所有PCI總線設備或者連接到該總線上所有設備的工具 man lspci lspci(8) …

光通信從入門到精通:PDH→DWDM→OTN 的超詳細演進筆記

光通信從入門到精通&#xff1a;PDH→DWDM→OTN 的超詳細演進筆記 作者&#xff1a; 脫脫克克 日期&#xff1a;2025-07-24 關鍵詞&#xff1a;DWDM、OTN、G.709、光纖、帶寬、C-band、L-band、DSP、ROADM 摘要 本文用一條“高速公路”的比喻&#xff0c;把 40 年光傳輸技術演進…

安全初級——網頁

網頁代碼<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用戶登錄</title><script src&…

JVM原理及其機制(二)

目錄 一 . 垃圾回收機制&#xff08;GC&#xff09; 二 . 垃圾回收的具體步驟 &#xff08;1&#xff09;先找出誰是垃圾 方案一&#xff1a;引用計數 方案二&#xff1a;可達性分析 &#xff08;2&#xff09;釋放垃圾的內存空間 方案一&#xff1a;標記清除 方案二…

Solo:基于 zkHE 的身份驗證協議,構建 Web3 可信匿名身份層

“Solo 正在基于其獨創的 zkHE 架構&#xff0c;構建一套“可信匿名”的鏈上身份系統&#xff0c;有望打破長期困擾 Web3 的“不可能三角”&#xff0c;即在隱私保護、身份唯一性與去中心化可驗證性之間實現兼得。”前不久&#xff0c;Web3 身份層項目 Solo 宣布完成 120 萬美元…

【Excel函數】將數據非空的字段篩選出來放在新列

一、需求描述 將對應數據不為空的字段篩選出來放在新的列里 二、解析 IFERROR(INDEX(B$2:B$10,SMALL(IF(C$2:C$10<>"",ROW(C$2:C$10)-ROW(C$2)1),ROW(A1))),"") 1. IF(C$2:C$10<>"", ROW(C$2:C$10)-ROW(C$2)1) 作用&#xff1a;…

【unity游戲開發入門到精通——組件篇】unity的粒子系統力場 (Particle System Force Field)實現如旋風、吸引力、風吹效果等

文章目錄前言一、參數介紹二、Particle System Force Field 的核心特性三、如何使用1、粒子系統開啟外力選項2、然后再添加粒子系統力場 (Particle System Force Field)即可參考專欄推薦完結前言 Unity的粒子系統是一個非常強大的工具&#xff0c;可以用來創建各種動態效果&am…

JS逆向基礎( AES 解密密文WordArray和Uint8Array實戰②)

1. Uint8Array 就像「快遞柜」 每個格子固定放「1 瓶飲料」(1 字節 = 8 位,范圍 0-255 就像飲料編號) 比如裝了 3 瓶:可樂(編號 255)、雪碧(10)、礦泉水(0) 這是超市通用的標準貨架,任何工具(JS 內置功能)都認識這種擺放方式 用途:運輸、存儲所有二進制東西(圖片…