mysql執行ref MySql執行分析

2021-10-19 19:29:39 字數 1582 閱讀 3278

標籤:

select_type: 表示select的型別,常見的有下面幾種

******: 簡單表,不使用連線或子查詢的

primary: 主查詢,即外層的查詢

union: union中的第二個或者後面的查詢語句

subquery: 子查詢中的第乙個select

table: 輸出結果集的表

type: 表示表的連線型別,效能由好到差的連線型別為下面順序

system: 表中只有一行,即常量表

const: 單錶中最多有乙個匹配行,如primary key或unique index

eq_ref: 對於前面的每一行,在此表中只查詢一條記錄,也就是多表連線中使用primary key或unique index

ref: 與eq_ref類似,區別在於不是使用primary key或unique index,而是使用普通索引

ref_or_null: 與ref型別,區別在於條件中包含對null的查詢

index_merge: 索引合併優化

unique_subquery: in的後面是乙個查詢主鍵欄位的子查詢

index_subquery: 與unique_subquery類似,區別在於in的後面是查詢非唯一索引欄位的子查詢

range: 單錶中的範圍查詢

index: 對於前面的每一行,都通過查詢索引來得到資料

all: 對於前面的每一行,都通過掃瞄全表來得到資料

possible_keys: 查詢時可能用到的索引

key: 查詢時實際使用到的索引

key-len: 索引欄位的長度

rows: 掃瞄行的數量

extra: 執**況的說明和描述

例如:explain select sum(money) from sales s,company c where s.company_id=c.id and s.year=2006 \g;

*************************** 1. row ***************************

id: 1

select_type: ******

table: s

type: ref

possible_keys: index_seles_year

key: index_sales_year

key_len: 2

ref: const

rows: 1

extra: using where

*************************** 2. row ***************************

id: 1

select_type: ******

table: c

type: ref

possible_keys: index_company_id

key: index_company_id

key_len: 5

ref: sakila.c.company_id

rows: 1

extra: using where; using index

標籤:

mysql 索引型別 ref MySQL索引型別

面試時曾經被問了mysql的索引型別,我這個寶批龍給達到資料儲存方式上了,聚集索引 二級索引 覆蓋索引,也慢慢對面試有了感覺,面試可能會給你乙個情景,然後深入問裡面的知識點 mysql有多種索引型別,索引是在儲存引擎中實現的,不同的儲存引擎對同乙個索引型別的實現方式不同,不同的儲存引擎支援不同的索引...

mysql執行原理 mysql 執行原理

闡述mysql系統的各個模組是如何相親相愛的完成乙個我們認為的很簡單的查詢工作的。我們對啟動mysql,客戶端建立連線,請求query,得到返回結果,最終退出。這樣一整個過程來進行分析。第一步 當我們執行啟動mysql系統的命令之後,mysql的初始化模組就從系統配置檔案中讀取系統引數和命令列引數,...

mysql 執行 MySQL之執行流程

mysql主要分為server層和儲存引擎層 server層 主要包括聯結器 查詢快取 分析器 優化器 執行器等,所有跨儲存引擎的功能都在這一層實現,比如儲存過程 觸發器 檢視,函式等,還有乙個通用的日誌模組 binglog日誌模組。儲存引擎 主要負責資料的儲存和讀取,採用可以替換的外掛程式式架構,...