bigInt與varchar索引的大小

2021-08-25 17:50:53 字數 962 閱讀 1868

今天晚上突然想到乙個問題:對於單個欄位的索引,用bigint和varchar做索引,bigint索引到底能減少多大?

於是我建了兩張表:

create table `test_long` (      `id` bigint(20) not null,      key `in` (`id`)   ) engine=innodb default charset=gbk;

create table `test_str` (      `id` varchar(20) character  not null,      key `in` (`id`)   ) engine=innodb default charset=gbk;

兩張表都只有乙個字段,乙個是bigint型,乙個是varchar型別。然後對這兩個欄位做btree索引。並向表中分別插入2w條資料。

結果如下:

test_long index length: 416.00 kb (425,984);

data length: 1.52 mb (1,589,248)

test_str index length: 448.00 kb (458,752)

data length: 1.52 mb (1,589,248)

從兩萬條資料來看,索引的大小基本沒有什麼差別,僅僅是差了乙個資料塊32k。

把資料量增加到8萬條的時候,索引大家差別還是很小。

test_long index length: 2.52 mb (2,637,824);

data length: 3.52 mb (3,686,400)

test_str index length: 2.52 mb (2,637,824)

data length: 3.52 mb (3,686,400)

索引大小仍然沒有明顯的差別。

這個結果表明bigint和varchar索引的大小應該是差不多的。沒有很大的差別(前提是插入的資料長度是相同的)

nvarchar與varchar的區別

varchar n 長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。所輸入的資料字元長度可以為零。varchar 在 sql 92 中的同義詞為 char varying ...

nvarchar與varchar的區別

一直以來對varchar和nvarchar不怎麼了解,也聽經理說過,他讓我盡量用varchar,我說為什麼啊,他說了一下,我不是太明白,哈哈!還是自己來找找吧!重網上找了別人的解釋,感覺有點頓悟!1.varchar n 長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是乙個介...

nvarchar與varchar的區別

varchar n 長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。所輸入的資料字元長度可以為零。varchar 在 sql 92 中的同義詞為 char varying ...