mysql可變資料型別 mysql之explain

2021-10-19 06:19:12 字數 1759 閱讀 1101

使用explain關鍵字可以模擬優化器執行sql語句,分析你的查詢語句或是結構的效能瓶頸。

在 select 語句之前增加 explain 關鍵字,mysql 會在查詢上設定乙個標記,執行查詢會返回執行計畫的資訊,而不是執行這條sql。

注意:如果 from 中包含子查詢,仍會執行該子查詢,將結果放入臨時表中。

type列

這一列表示關聯型別或訪問型別,即mysql決定如何查詢表中的行,查詢資料行記錄的大概範圍。

依次從最優到最差分別為:system > const > eq_ref > ref > range > index > all

一般來說,得保證查詢達到range級別,最好達到ref

index效能為什麼比較靠後

是指用到了索引,是index型別的方式:這種型別表示是mysql會對整個該索引進行掃瞄。要想用到這種型別的索引,對這個索引並無特別要求,只要是索引,或者某個復合索引的一部分,mysql都可能會採用index型別的方式掃瞄。但是呢,缺點是效率不高,mysql會從索引中的第乙個資料乙個個的查詢到最後乙個資料,直到找到符合判斷條件的某個索引。

正常利用到索引的型別

ref:這種型別表示mysql會根據特定的演算法快速查詢到某個符合條件的索引,而不是會對索引中每乙個資料都進行一 一的掃瞄判斷,也就是所謂你平常理解的使用索引查詢會更快的取出資料。

key列

這一列顯示mysql實際採用哪個索引來優化對該錶的訪問。

如果沒有使用索引,則該列是 null

key_len列

這一列顯示了mysql在索引裡使用的位元組數,通過這個值可以算出具體使用了聯合索引中的哪些

列。key_len計算規則如下:

字串char(n):n位元組長度

varchar(n):可變資料型別.最大n個字元。n位元組長度,2位元組儲存字串長度,如果是utf-8,則長度 3n + 2

數值型別

tinyint:1位元組

smallint:2位元組

int:4位元組

bigint:8位元組

時間型別

date:3位元組

timestamp:4位元組

datetime:8位元組

如果字段允許為 null,需要1位元組記錄是否為 null

索引最大長度是768位元組,當字串過長時,mysql會做乙個類似左字首索引的處理,將前半

部分的字元提取出來做索引。

ps:在 int(m) 中,m 的值跟 int(m) 所佔多少儲存空間並無任何關係。 int(3)、int(4)、int(8) 在磁碟上都是占用 4 btyes 的儲存空間。說白了,除了顯示給使用者的方式有點不同外,int(m) 跟 int 資料型別是相同的。

extra

using index 查詢的列被索引覆蓋,並且where篩選條件是索引的是前導列(聯合索引中的第乙個字段),直接訪問索引就足夠獲取到所需要的資料。

using index condition:用到了索引,但需要通過索引回表查詢資料(用到索引的範圍查詢情況)。

using where using index:是乙個非常模糊的東西,只是表示:無法「直接」通過索引直接查詢到符合條件的資料。

using where:沒有用到了索引,使用 where 語句來處理結果,查詢的列未被索引覆蓋(type為all)

using temporary:mysql需要建立一張臨時表來處理查詢。出現這種情況一般是要進行優化的,首先是想到用索引來優化。

python 可變資料型別 不可變資料型別

在python中,資料型別分為可變資料型別和不可變資料型別,不可變資料型別包括string,int,float,tuple,可變資料型別包括list,dict。所謂的可變與不可變,舉例如下 a test print a 0 t a 0 1 traceback most recent call las...

python 可變資料型別 不可變資料型別

在python中,資料型別分為可變資料型別和不可變資料型別,不可變資料型別包括string,int,float,tuple,可變資料型別包括list,dict。所謂的可變與不可變,舉例如下 a test print a 0 t a 0 1 traceback most recent call las...

可變資料型別與不可變資料型別

可變資料型別 資料更改前後,記憶體id不變 列表,字典,集合 不可變資料型別 資料更改前後,記憶體id發生改變 數字 包括 整型,浮點型 字串,元組 分別對各種資料型別進行驗證 數字 int float 不可變資料型別 資料型別是不允許改變的,這就意味著如果改變量字資料型別的值,將重新分配記憶體空間...