来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 索引的目的是大大提高查询效率,还有读写效率。kettle向sql里面插入,更新时,也要建立索引,可以大大提升处理时间。但是建立索引报错:Specified key was too long; max key length is 1000 byte...
索引的目的是大大提高查询效率,还有读写效率。kettle向sql里面插入,更新时,也要建立索引,可以大大提升处理时间。 但是建立索引报错:Specified key was too long; max key length is 1000 bytes 这是mysql中,索引字段的类型设置的总体过长,看一下fields里面字段类型,总体加起来不超过1000字节 注意,字段长度,是char长度乘以自身字段类型的位数,累加和不能超过限定的key长1000: 以GBK为例:
KEY `idx_1` (`packagename`,`storename`,`app_name`,`version`,`category`,`app_link_hash`) USING BTREE 字段类型都是utf8,乘3后,超过1000。 1,applink字段要200以上,用了必超。解决办法:将applink用MD5算法,转换为特定长度的applink_hash码(32位长),一一对应,长度特定,用这个新字段只有32位就行了。排除过长字段,转换成特定hashcode,一一对应。 2,kettle插入时分析唯一key。字段之间关系,很多字段联合起来可以唯一确定某个字段,那这个字段就不用出现在索引中。kettle插入时就不用去比对这个字段 3,改成小字段的兼容类型。如果字段内容,允许,也就是包含的内容,很少,比如utf8的类型,可以修改成gbk,就可以省去一个字段。但是数据内容必须能被gbk包含,否则,内容不识别,插进去也没用。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com