MySQL 執行計畫

2021-10-25 11:26:12 字數 1056 閱讀 5515

每次提交乙個sql給mysql,查詢優化器都會針對這個sql語句的語義去生成乙個執行計畫

巢狀迴圈關聯

多表查詢的時候,他會先在乙個驅動表裡根據where條件篩選一波資料,然後這波資料走迴圈,每個資料都到另乙個被驅動表裡去根據連線條件和where篩選資料然後關聯,重複上述過程知道關聯完所有表

show

table

status

like

'表名'

// 拿到表的統計資訊

rows就是表裡的記錄數,data_length就是聚簇索引的位元組數大小,data_length/1024/16大約就是頁數

io成本:資料頁數量1.0+微調值

cpu成本:行記錄數0.2+微調值

io成本+cpu成本=總成本

select

*from t1 join t2 on t1.x1 = t2.x1 and t1.id =

1

mysql先根據t1的主鍵id查詢出id=1的值,然後替換掉去t2中查詢

select

*from t1 where x1 =

(select x1 from t2 where id = ***)

先進行子查詢,然後拿著子查詢的結果去t1單錶查詢

select

*from t1 where x1 in

(select x2 from t2 where x3 = ***)

mysql會先執行子查詢,把查詢結果都寫入乙個臨時表,也可以說是物化表,會多這個表建好索引,然後再進行in查詢

select

*from t1 where x1 in

(select x2 from t2 where x3 = ***)

mysql會轉化成半連線,semi join,半連線與in+子查詢的語義完全相同,這是mysql核心級的操作

每條sql語句前面加上explain就會得到這條sql的執行計畫

mysql執行計畫 MySQL 執行計畫

1.執行計畫的定義 什麼是執行計畫 查詢計畫 呢?執行計畫就是一系列的操作步驟。sql是宣告性語言,它只告訴資料庫要查詢什麼,但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。這個工作是由優化器來完成的。優化器會比較不同的執行計畫,然後選擇其中最優的一套。2....

mysql 生成執行計畫 MySQL執行計畫

和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...

mysql 查詢執行計畫 MySql執行計畫的檢視

一。什麼是資料庫執行計畫 利用乙個sql語句,你可能要server取出所有news表中的資訊.當server收到的這條sql的時候,第一件事情並不是解析它.如果這條sql沒有語法錯誤,server才會繼續工作.server會決定最好的計算方式.server會選擇,是讀整個news表好呢,還是利用索引...