前言
本文主要记录SQL索引实战及出现(used in key specification without a key length)报错处理方式的相关笔记
1. 索引建立前查找速度
对一个500多万行的数据根据某一列的一个值进行查找,查找语句为:
select * from table_all where `MD5-作者ID`='d27cefd2ec46e01df063121af5b022e6'
可以看到最终查找使用时间为30.5s:

2. 索引建立及报错处理
下面我们对这一列新建一个索引,使用普通索引,语句为:
alter table table_all add index idx_last(`MD5-作者ID`)
这里可能会报错显示:
这是因为我们给设置的类型为text,不是定长的,非定长列新建索引会报这个错误,所以将类型更改为varchar()即可,如果使用navc,可以直接在“设计表”里更改,也可以直接使用sql语句进行更改,查询语句更改会慢一些,要十几分钟,更改语句如下:
ALTER TABLE table_all CHANGE COLUMN `MD5-作者ID` `MD5-作者ID` VARCHAR(255)
之后再运行生成结果即可:
3. 索引建立后查找速度
最后再试一下查询速度,可以看到查询速度从30.5s降为了3.24s,极大的提升了查询速度: