MySQL索引長度限制

2022-05-12 20:37:23 字數 1128 閱讀 5275

textfield是不支援建立索引的

mysql對索引字段長度有限制

innodb引擎的每個索引列長度限制為767位元組(bytes),所有組成索引列的長度和不能大於3072位元組

myisam引擎的每個索引列長度限制為1000位元組,所有組成索引列的長度和不能大於1000位元組

varchar的最大長度是指字元長度,若資料庫字符集為utf-8,則乙個字元佔3個bytes。因此在utf-8字符集下,innodb引擎建立的單列索引長度不能超過255個字元

mysql版本不同而導致的索引長度限制不同

在mysql5.5版本,引入了innodb_large_prefix,用來禁用大型字首索引,以便與不支援大索引鍵字首的早期版本的innodb相容

開啟innodb_large_prefix可以使單索引的長度限制達到3072位元組(但是聯合索引總長度限制還是3072位元組),禁用時單索引的長度限制為767位元組

在mysql5.5版本與mysql5.6版本,innodb_large_prefix是預設關閉的,在mysql5.7及以上版本則預設開啟

在mysql8.0版本中,innodb_large_prefix已被移除

這就是我在自己機器(mysql8.0)上可以建立1024字元(utf8字符集下表示3072位元組)長的索引,而在伺服器(mysql5.5)上不行的原因

測試索引長度限制的指令碼:

use test;

drop table if exists test_index_len;

create table

test_index_len(long_char varchar(1025) primary key) engine=innodb charset=utf8;

use test;

drop table if exists test_index_len;

create table

test_index_len(

long_char varchar(24),

origin_str varchar(1000),

key test_index(long_char, origin_str)) engine=innodb charset=utf8;

Mysql 索引長度限制

在設定 utf8mb4 欄位的字元長度時,可能會丟擲乙個異常 specified key was too long max key length is 1000 bytes 也就是在給表的索引字段新增字元長度時,超過了最大索引長度 1000 位元組。關於索引長度的限制,最主要的因素就是儲存引擎和字符...

突破索引長度限制

descript 利用checksum建立索引 use tempdb go drop table dbo.t create table dbo.t id int primary key identity 1,1 name nvarchar max 這裡我偷懶一下,自己注意在ide中,關閉,不要插入太...

mysql 索引長度

specified key was too long max key length is 767 bytes mysql在innodb引擎下的主鍵索引或者unique索引的最大長度為767bytes,在myisam下是1000bytes。當時我在建立unique索引的時候使用了兩個varchar 2...