bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

MySQLexplain中的rows是如何計算的

這篇文章主要講解了“MySQL explain中的rows是如何計算的”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL explain中的rows是如何計算的”吧!

創新互聯于2013年創立,先為巴青等服務建站,巴青等地企業,進行企業商務咨詢服務。為巴青企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

【背景鋪墊】

相關表:

CREATE TABLE test_table (  id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,  name varchar(32) NOT NULL,  PRIMARY KEY (id)) ENGINE = InnoDB CHARSET = utf8mb4;

test_table 表記錄數約12w+

問題描述

相關SQL:

EXPLAIN SELECT COUNT(*)

FROM test_table

WHERE id >= 10534

AND id <= 15375;

MySQL explain中的rows是如何計算的

疑問1:上述SQL理應按id主鍵(聚簇索引)范圍查找,為啥explain里的rows會多余兩者之差呢?

在SQL結尾處增加 LIMIT 10 后,rows數值竟然沒有任何影響(覺得可能會變為: 10)。

EXPLAIN SELECT COUNT(*)

FROM test_table

WHERE id >= 10000

LIMIT 10;

MySQL explain中的rows是如何計算的

疑問2:LIMIT值不會影響rows的值么?

rows究竟是怎么計算的呢?

這個rows在官網文檔中的解釋如下:

“    

rows (JSON name: rows)

The rows column indicates the number of rows MySQL believes it must examine to execute the query.

For [InnoDB] tables, this number is an estimate, and may not always be exact.

http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rows

簡單理解即:這個rows就是mysql認為估計需要檢測的行數。

為了探究rows究竟是如何算出來的,查找MYSQL源碼來看看:

文件1:sql/opt_explain_traditional.cc   關鍵部分:push(&items, column_buffer.col_rows, nil)文件2:sql/opt_explain.cc   關鍵部分:select->quick->records文件3:sql/opt_range.cc   關鍵部分:check_quick_select

而check_quick_select的功能,在MySQL源碼中的注釋為:

“    
Calculate estimate of number records that will be retrieved by a range scan on given index using given SEL_ARG intervals tree.    

簡單翻譯就是:這個方法僅僅根據給出的關于這個索引的條件和索引本身,來判斷需要掃描多少行。

總結

MySQL Explain 里的 rows 這個值
  • 是MySQL認為它要檢查的行數(僅做參考),而不是結果集里的行數;
  • 同時 SQL里的 LIMIT 和這個也是沒有直接關系的。
另外,很多優化手段,例如關聯緩沖區和查詢緩存,都無法影響到rows的顯示。  MySQL可能不必真的讀所有它估計到的行,它也不知道任何關于操作系統或硬件緩存的信息。

感謝各位的閱讀,以上就是“MySQL explain中的rows是如何計算的”的內容了,經過本文的學習后,相信大家對MySQL explain中的rows是如何計算的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

新聞標題:MySQLexplain中的rows是如何計算的
鏈接地址:http://vcdvsql.cn/article24/iippje.html

成都網站建設公司_創新互聯,為您提供定制開發微信小程序響應式網站定制網站搜索引擎優化網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設