SQL執行計畫簡述

2021-10-19 08:27:16 字數 2152 閱讀 7415

sql執行計畫分析

索引的執行計畫主要可以根據explain select * from ***x 來看

1 type

下面以 const>ref>range>index>all,其中級別能達到const、ref都很好,range看篩選出來情況,如果篩出10w條資料那就坑了(另外主鍵/唯一索引 用 is null,type=ref,二級索引是type=ref_or_null)

-- mysql版本:5.7.22

-- 等值查詢

explain select *

from user_demo_course

-- 第一種:普通索引:type=ref

-- where user_id=115

-- 第二種:主鍵/唯一索引:type=const

-- where id = 652

-- where commentid = 26515

-- 第三中:沒有索引:type=all

-- where pkid=321

-- 範圍查詢

explain select *

from user_demo_course

-- 第一種:普通索引:type=range

-- where user_id > 20212 and user_id < 21254

-- 第二種:主鍵/唯一索引:type=range

-- where id > 20212 and id < 21254

-- where commentid > 20212 and commentid < 21254

-- 第三中:沒有索引:type=all

-- where pkid > 20212 and pkid < 21254

-- 掃面索引樹(type=index表示)

explain select

swapid,pkid

from user_demo_course

-- 第一種:聯合索引中非第乙個,如(a, b)中b過濾,並且select裡面只有二級索引樹的字段,這時候就是掃面二級索引樹

-- -- type=index

where pkid > 3123412

-- 第二種:假設commentid是普通索引,select中是select commentid from ***,這時候也是掃瞄二級索引樹

-- type=inde

-- where commentid = 323

多表關聯sql怎麼執行

舉個例子如下:

select * from t1,t2 where t1.x1=xx and t1.x2=t2.x2 and t2.x3=***

- 先查出t1.x1=xx的資料,然後把這波資料與t2表關聯,即t1.x2=t2.x2 and t2.x3=***關聯得到資料

怎麼計算查詢成本?

假設有乙個二級索引 where user_id in (x,xx,xx), 查出100條資料,其中涉及到24(不好說,如果無序情況下甚至會達到100個)個資料頁。其成本如下:

成本 = 0.2 * 100條 + 1 * 24頁 + 0.2 * 100(二級索引需要回表) = 64

就是說主鍵索引(不用回表),有序查詢(user_id > ***x,資料頁涉及比較少,比嗎比in這些不確認要好,但是in用途較廣),這些查詢方式會好一點 

mysql如何基於各種規則去優化

1 基於in語句子查詢優化:

會先執行子查詢裡資料,然後寫入乙個

臨時表(explain可見 extra: using temporary),結果集不大就基於memory儲存引擎,結果集較大就建立普通b+樹索引放在磁碟,反正就是有索引的。

- select * from t1 where x1 in (select x2 from t2 where x3=***)

explain中extra的意思

using temporary:使用臨時表

using index:僅在二級索引執行,不需要回表

using index condition:現在二級索引查,然後回表找出其他(需要回表)

SQL執行計畫

引言 實際專案開發中,由於我們不知道實際查詢的時候資料庫裡發生了什麼事情,資料庫軟體是怎樣掃瞄表 怎樣使用索引的,因此,我們能感知到的就只有 sql語句執行的時間,在資料規模不大時,查詢是瞬間的,因此,在寫sql語句的時候就很少考慮到效能的問題。但是當資料規模增大,如千萬 億的時候,我們運 行同樣的...

SQL 執行計畫

使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的。分析你的查詢語句或是表結構的效能瓶頸 l 表的讀取順序 l 資料讀取操作的操作型別 l 哪些索引可以使用 l 哪些索引被實際使用 l 表之間的引用 l 每張表有多少行被優化器查詢 explian ...

Sql優化 執行計畫

一段sql 寫好以後,可以通過檢視sql的執行計畫,初步 該sql在執行時的效能好壞,尤其是在發現某個sql語句的效率較差時,我們可以通過檢視執行計畫,分析出該sql 的問題所在。1 開啟熟悉的檢視工具 pl sql developer。在pl sql developer中寫好一段sql 後,按f5...