VARCHAR欄位指定索引長度

2021-10-01 18:19:13 字數 1340 閱讀 9485

在varchar欄位上建立索引時,必須指定索引長度,沒必要對全欄位建立索引,根據實際文字區分度決定索引長度 --《阿里開發手冊》

create

table my_user (

id bigint

unsigned

, user_name varchar(50

),primary

key(id)

)

insert

into

my_user

values(1

,"火螢, keep your fire"),

(2,"寒芒, 鋒利的劍"),

(3,"皓月, 同一輪月與對你的思念"),

(4,"波光, 海邊的慢時光"),

(5,"極光, 奇幻之境"),

(6,"黑耀, 能量內斂"),

(7,"恆星, 驅散陰霾"),

(8,"流星, 夢與幻想"),

(9,"落霞, 落幕"),

(10,"白雪, 寂靜之地的審判"),

(11,"皓月, 夢與幻想"),

(12,"黑耀, 同一輪月與對你的思念"),

(13,"海邊的慢時光, 恆星"),

(14,"極光,鋒利的劍"

)

mysql的left()函式是乙個字串函式,它返回具有指定長度的字串的左邊部分。

left(str, length);

兩個引數的含義:

select

count

(distinct

left

(user_name,1)

)/count(*

)from

my_user

sql說明: 擷取user_name欄位左邊第一位,然後統計其去重後的數目(distinct 去重),用該數目除以表中總資料量,得到區分度

區分度:0.7857

select

count

(distinct

left

(user_name,4)

)/count(*

)from

my_user

區分度:0.8571

索引長度

區分度1

0.7857

40.8571

「索引的長度與區分度是一對矛盾體,一般對字串型別資料,長度為20的索引,區分度會高達90%」 --《阿里開發手冊》

eg:

create

index 索引名 on 表名 (列名(長度)

)

Mysql的 VARCHAR欄位最大長度到底是多少

mysql5.0.3之前varchar n 這裡的n表示位元組數 mysql5.0.3之後varchar n 這裡的n表示字元數,比如varchar 200 不管是英文還是中文都可以存放200個 注 這兩個是完全不一樣的單位,位元組表示字元佔的多少k,字元表示乙個完整的字元 mysql要求乙個行定義...

關於資料庫Varchar欄位型別長度設計問題

關於資料庫varchar欄位型別長度設計問題 現代資料庫一般都支援char與varchar字元型字段型別,char是用來儲存定長字元,儲存空間的大小為字段定義的長度,與實際字元長度無關,當輸入的字元小於定義長度時最後會補上空格。varchar是用來保留變長字元,在資料庫中儲存空間的大小是實際的字元長...

關於資料庫Varchar欄位型別長度設計問題

關於資料庫varchar欄位型別長度設計問題 現代資料庫一般都支援char與varchar字元型字段型別,char是用來儲存定長字元,儲存空間的大小為字段定義的長度,與實際字元長度無關,當輸入的字元小於定義長度時最後會補上空格。varchar是用來保留變長字元,在資料庫中儲存空間的大小是實際的字元長...