小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關(guān)于Explain

 怡紅公子0526 2022-04-05

最近在對(duì)sql進(jìn)行性能優(yōu)化因此對(duì)explain相關(guān)的知識(shí)進(jìn)行一個(gè)簡(jiǎn)單的整理歸納。

EXPLAIN:

  為SELECT語(yǔ)句中使用到的每個(gè)表返回一條 SELECT 執(zhí)行的詳細(xì)信息;按照MySQL在處理語(yǔ)句時(shí)讀取它們的順序列出這些表。

命令輸出格式

id = 1    
select_type = SIMPLE    
table = clazz    
partitions =     
type = const    
possible_keys = PRIMARY    
key = PRIMARY    
key_len = 98    
ref = const    
rows = 1    
filtered = 100.00    
Extra =     
  • id:SELECT 標(biāo)識(shí)符,SQL執(zhí)行的順序的標(biāo)識(shí),SQL從大到小的執(zhí)行
    • id相同時(shí),執(zhí)行順序由上至下
    • 如果是子查詢,id的序號(hào)會(huì)遞增,id值越大優(yōu)先級(jí)越高,越先被執(zhí)行
    • 如果id相同,則認(rèn)為是一組,從上往下順序執(zhí)行;在所有組中,id值越大,優(yōu)先級(jí)越高,越先執(zhí)行
  • select_type
    • SIMPLE:簡(jiǎn)單的SELECT未使用 UNION 查詢或子查詢
    • PRIMARY:表示此查詢是最外層的SELECT(如兩表做UNION或者存在子查詢的外層的表操作為PRIMARY,內(nèi)層的操作為UNION)
    • UNION:表示UNION操作中,查詢中處于內(nèi)層的SELECT(內(nèi)層的SELECT語(yǔ)句與外層的SELECT語(yǔ)句沒(méi)有依賴關(guān)系)
    • DEPENDENT UNION:表示UNION操作中,查詢中處于內(nèi)層的SELECT(內(nèi)層的SELECT語(yǔ)句與外層的SELECT語(yǔ)句有依賴關(guān)系)
    • UNION RESULT:UNION 操作的結(jié)果,id值通常為null
    • SUBQUERY:子查詢中的第一個(gè) SELECT
    • DEPENDENT SUBQUERY:子查詢中的第一個(gè) SELECT, 子查詢依賴于外層的查詢結(jié)果
    • ERIVED:被驅(qū)動(dòng)的SELECT子查詢(子查詢位于from子句)
    • MATERIALZED:物化子查詢(對(duì)此查詢會(huì)創(chuàng)建臨時(shí)表,將制定表物化為臨時(shí)表)
    • UNCACHEABLE SUBQUERY:無(wú)法緩存子查詢的結(jié)果,每次都需要計(jì)算
    • UNCACHEABLE UNION:UNION操作紅內(nèi)層的子查詢無(wú)法被物化(類似于UNCACHABLESUBQUERY)
  • table:表示查詢涉及的表或衍生表
  • type
    • ALL:全表掃描,mysql將便利全表數(shù)據(jù)直至找到匹配的行
    • index:全索引掃描,遍歷索引樹(shù)
    • range:  范圍掃描,基于索引做掃描,如between,in,>=,like等操作
    • ref: 表示上述的連接匹配條件,即哪些列或產(chǎn)量被用于查找索引列上的值
    • eq_ref: 類似ref區(qū)別在于索引是唯一索引,對(duì)于每個(gè)索引鍵值表中只有一條記錄匹配,即多表連接中使用primary key或者unique key作為關(guān)聯(lián)條件
    • const: 只讀取一次就能獲得數(shù)據(jù)(如:主鍵)
    • system: const的特例,查詢的表中只有一行的情況下,使用system
    • null: mysql在優(yōu)化的過(guò)程中分解語(yǔ)句,執(zhí)行時(shí)甚至不用訪問(wèn)表或索引,例如從一個(gè)索引列里面選取最小值可以通過(guò)單獨(dú)索引查找完成  
  • partitions:記錄與查詢匹配的分區(qū)
  • possible_keys:表示在查詢時(shí), 能夠使用到的索引具體使用了哪些索引, 由 key 字段決定.
  • key:表示查詢時(shí)所真正使用到的索引.
  • key_len:表示查詢優(yōu)化器使用了索引的字節(jié)數(shù). 這個(gè)字段可以評(píng)估組合索引是否完全被使用, 或只有最左部分字段被使用到
    • 字符串
      • char(n): n 字節(jié)長(zhǎng)度
      • varchar(n): 如果是 utf8 編碼, 則是 3 n + 2字節(jié); 如果是 utf8mb4 編碼, 則是 4 n + 2 字節(jié)
    • 數(shù)值類型  
      • TINYINT: 1字節(jié)
      • SMALLINT: 2字節(jié)
      • MEDIUMINT: 3字節(jié)
      • INT: 4字節(jié)
      • BIGINT: 8字節(jié)
    • 時(shí)間類型 
      • DATE: 3字節(jié)
      • TIMESTAMP: 4字節(jié)
      • DATETIME: 8字節(jié)
    • 字段屬性: NULL 屬性 占用一個(gè)字節(jié). 如果一個(gè)字段是 NOT NULL 的, 則沒(méi)有此屬性.
  • ref:被用來(lái)標(biāo)識(shí)那些用來(lái)進(jìn)行索引比較的列或者常量
  • rows:估算 SQL 要查找到結(jié)果集需要掃描讀取的數(shù)據(jù)行數(shù)
  • filterd:給出了一個(gè)百分比的值,這個(gè)百分比值和 rows 列的值一起使用
  • Extra: 附加與操作相關(guān)聯(lián)的信息
    • Using filesort
      • 表示 MySQL 需額外的排序操作, 不能通過(guò)索引順序達(dá)到排序效果,查詢 CPU 資源消耗大建議優(yōu)化去掉,
    • Using index
      • "覆蓋索引掃描", 表示查詢?cè)谒饕龢?shù)中就可查找所需數(shù)據(jù), 不用掃描表數(shù)據(jù)文件, 往往說(shuō)明性能不錯(cuò)
    • Using where
      • where條件用于篩選出與下一個(gè)表匹配的數(shù)據(jù)然后返回給客戶端
    • Using temporary
      • 查詢有使用臨時(shí)表, 一般出現(xiàn)于排序, 分組和多表 join 的情況, 查詢效率不高 建議優(yōu)化.
    • Impossible where
      • WHERE條件過(guò)濾沒(méi)有效果,或者是始終選不出任何列(理解為最終是全表掃描)
    • Impossible HAVING
      • HAVING條件過(guò)濾沒(méi)有效果,或者是始終選不出任何列(理解為返回已有查詢的結(jié)果集)
    • unique row not found
      • 表中找不到滿足條件唯一索引或主鍵索引的列
    • Using sort_union(...),Using union(...),Using intersect(...)
      • 表示在index_merge的連接類型中索引合并是怎么樣完成的,及使用了怎樣特別的算法

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多