大家好!今天我們來聊一個 MySQL 核心知識點:B+樹索引的查詢過程。可能你每天都在用SELECT語句查詢數據,但你想過這背後到底發生了什麼嗎?MySQL 是怎麼從成千上萬的數據中快速找到你要的那一條記錄的?帶着這個問題,我們一起揭開 MySQL B+樹索引的神秘面紗!
先説説為什麼 MySQL 選擇 B+樹?
在聊查詢過程前,我們得先明白 MySQL 為啥選 B+樹做索引結構。想象一下,如果數
你是否曾經為 MySQL 查詢性能苦惱?或者聽説過"索引下推",但不太明白它是如何工作的?今天我就和大家聊聊 MySQL 中一個強大卻常被忽視的特性 - 索引下推(Index Condition Pushdown,簡稱 ICP)。這個特性從 MySQL 5.6 版本引入,能有效提升查詢性能,減少 IO 操作,但很多開發者對它的理解還不夠深入。
索引下推是什麼?
索引下推是由 MySQL 優化器決定
MySQL 索引會失效的情況很多,尤其是在查詢條件、數據類型、排序方式或優化器選擇策略上不合適時。下面我按常見原因分組給你梳理一下,並標明是肯定失效還是可能失效(取決於優化器判斷)。
一、查詢條件寫法導致失效
這些是最常見的坑:
在索引列上使用函數或表達式(肯定失效)
SELECT * FROM user WHERE YEAR(create_time) = 2024; -- cr