【八股】什么叫做mysql的索引下推

1. chatGPT解釋

MySQL的索引下推(Index Condition Pushdown,ICP)是一種優(yōu)化技術(shù),它將WHERE子句中的條件下推到索引層級進行過濾,以減少數(shù)據(jù)庫服務(wù)器需要掃描的行數(shù),提高查詢性能。它能夠利用索引提供的額外信息進行優(yōu)化,盡可能地減少對表的訪問,因此在大型數(shù)據(jù)集上非常有用。

簡單來說,當(dāng)MySQL查詢時,它可以在讀取表之前對索引進行過濾,以排除不符合條件的行,這樣可以減少表掃描的次數(shù)和所需的IO操作。通過使用索引下推,MySQL可以更有效地處理WHERE子句和其他限制條件,并更快地返回結(jié)果。

總之,索引下推是MySQL數(shù)據(jù)庫的一種優(yōu)化技術(shù),能夠利用索引提供的額外信息進行優(yōu)化,盡可能減少對表的訪問,提高查詢性能。

2. 背景知識

2.1 回表查詢

MySql性能(3)—InnoDB中的聚簇索引和普通索引

innodb的聚簇索引.png

mysql普通索引(二級索引)中存儲的是主鍵id,如果要查詢到表記錄,需要進行回表查詢。

回表查詢.png

2.2 索引下推

MySQL的索引下推(Index Condition Pushdown,ICP)是一種優(yōu)化技術(shù),它將WHERE子句中的條件下推到索引層級進行過濾,以減少數(shù)據(jù)庫服務(wù)器需要掃描的行數(shù),提高查詢性能。它能夠利用索引提供的額外信息進行優(yōu)化,盡可能地減少對表的訪問,因此在大型數(shù)據(jù)集上非常有用。
簡單來說,當(dāng)MySQL查詢時,它可以在讀取表之前對索引進行過濾,以排除不符合條件的行,這樣可以減少表掃描的次數(shù)和所需的IO操作。通過使用索引下推,MySQL可以更有效地處理WHERE子句和其他限制條件,并更快地返回結(jié)果。

對應(yīng)場景:

  • 在開始之前先先準(zhǔn)備一張用戶表(user),其中主要幾個字段有:id、name、age、address。建立聯(lián)合索引(name,age)。
SELECT * from user where  name like '陳%' and age=11
  • 根據(jù) "最佳左前綴" 的原則,這里使用了聯(lián)合索引(name,age)進行查詢,但是僅使用到了name索引。
索引下推.png

核心原理:將where條件篩選下推到二級索引檢索主鍵id時,以減少回表次數(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容