千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > mysql explain中rows是怎么計算的?

mysql explain中rows是怎么計算的?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 05:03:36 1697144616

一、mysql explain中rows是怎么計算的

row值的含義是mysql解釋器【認為】應該查詢的行數,有人研究過源碼發現這個玩意和實際查詢時的表現并沒有太多關系。

簡單來講就是,這個rows值只是mysql根據緩存數據的一個估算,反應的是在只有一堆數據并且沒有索引時應該掃描的行數。

加過索引后rows值的計算方法和不加索引時相同,依然會出現幾萬行的情況。但實際查詢時mysql會優先讀取索引,根據B+樹的分支和LIMIT值進行判斷。

也就是說實際執行時可能只讀取了LIMIT條數據,但是EXPLAIN這個解釋預判中的rows數值卻很大,因為這是未優化時的預判結果,這個算法并沒有隨著索引和查詢條件而更新。

所以根本不用考慮rows行數過大的問題,只要索引正確且后面沒有用到filesort,查詢時間也不長,那你的數據庫設計就沒有問題。

網上好多文章里寫的rows值越小越好其實是誤區,有時候索引無論怎么建都會讓rows顯示很大,這個表述是錯誤的。

你用InnoDB引擎查詢試試,有的時候rows值比你數據表中總行數還要大,明顯是一個緩存估算結果。

延伸閱讀:

二、什么是執行計劃

有了慢查詢語句后,就要對語句進行分析。一條查詢語句在經過MySQL查詢優化器的各種基于成本和規則的優化會后生成一個所謂的執行計劃,這個執行計劃展示了接下來具體執行查詢的方式,比如多表連接的順序是什么,對于每個表采用什么訪問方法來具體執行查詢等等。EXPLAIN語句來幫助我們查看某個查詢語句的具體執行計劃。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲人成aⅴ在线播放 | 亚洲高清在线精品尤物三区 | 天天做天天爱天天做天天吃中文 | 亚洲三级精品视频 | 日本人妖在线专区 | 日韩欧美理论在线观看 |