日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql回表_到底什么情况下mysql innodb会发生回表操作?

發(fā)布時(shí)間:2023/11/27 数据库 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql回表_到底什么情况下mysql innodb会发生回表操作? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

謝邀

MySQL innodb的主鍵索引是簇集索引,也就是索引的葉子節(jié)點(diǎn)存的是整個(gè)單條記錄的所有字段值,不是主鍵索引的就是非簇集索引,非簇集索引的葉子節(jié)點(diǎn)存的是主鍵字段的值。回表是什么意思?就是你執(zhí)行一條sql語(yǔ)句,需要從兩個(gè)b+索引中去取數(shù)據(jù)。舉個(gè)例子:

表tbl有a,b,c三個(gè)字段,其中a是主鍵,b上建了索引,然后編寫sql語(yǔ)句

SELECT * FROM tbl WHERE a=1

這樣不會(huì)產(chǎn)生回表,因?yàn)樗械臄?shù)據(jù)在a的索引樹中均能找到

SELECT * FROM tbl WHERE b=1

這樣就會(huì)產(chǎn)生回表,因?yàn)閣here條件是b字段,那么會(huì)去b的索引樹里查找數(shù)據(jù),但b的索引里面只有a,b兩個(gè)字段的值,沒有c,那么這個(gè)查詢?yōu)榱巳〉絚字段,就要取出主鍵a的值,然后去a的索引樹去找c字段的數(shù)據(jù)。查了兩個(gè)索引樹,這就叫回表。

索引覆蓋就是查這個(gè)索引能查到你所需要的所有數(shù)據(jù),不需要去另外的數(shù)據(jù)結(jié)構(gòu)去查。其實(shí)就是不用回表。

怎么避免?不是必須的字段就不要出現(xiàn)在SELECT里面。或者b,c建聯(lián)合索引。但具體情況要具體分析,索引字段多了,存儲(chǔ)和插入數(shù)據(jù)時(shí)的消耗會(huì)更大。這是個(gè)平衡問題。

總結(jié)

以上是生活随笔為你收集整理的mysql回表_到底什么情况下mysql innodb会发生回表操作?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

歡迎分享!

轉(zhuǎn)載請(qǐng)說明來源于"生活随笔",并保留原作者的名字。

本文地址:mysql回表_到底什么情况下mysql innodb会发生