mysql添加索引报错1170 -BLOB/TEXT column ‘xx‘ used in key specification without a key length分析及解决

因之前代码查询较慢,explain分析后,先加索引处理,结果报错

> 1170 - BLOB/TEXT column 'value' used in key specification without a key length

在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据 实际文本区分度决定索引长度即可。Java 开发手册 33/44 说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为 20 的索引,区分度会高达 90%以上,可以使用 count(distinct left(列名, 索引长度))/count(*)的区分度来确定。

越接近1表示重复数据越少,越适合建立索引。

已有数据加索引时间太长,但只有100多条数据

create table sys_data1 like sys_data;
create index idx_value on sys_data1(value(28));
INSERT into sys_data1 SELECT * from sys_data;
drop table sys_data;
rename table sys_data1 to sys_data;

sql尽量一条一条执行

Guess you like

Origin blog.csdn.net/KeepLearnZhangXiaoBo/article/details/118437540