首页 > 编程知识 正文

navicat与mysql的关系,mysql如何创建索引

时间:2023-05-05 18:20:46 阅读:24083 作者:3896

索引的目的是大大提高查询的效率和读写效率。

kettle插入sql中,在更新时也进行索引,可以大大提高处理时间。

但是索引错误:指定密钥was too long; max key length is 1000 bytes

这在mysql中,索引字段的整个类型设置太长。 让我们来看看fields的字段类型。 总共不超过1000字节

请注意,字段的长度是char长度乘以字段类型的位数,累计总长度不要超过受限密钥长度1000。

latin1=1 byte=1 character

uft8=3 byte=1 character

gbk=2 byte=1 character

以GBK为例:

createuniqueindex ` unique _ record ` on reports ` ` report _ name `,` report_client `,` report_city ` );

其中包括report_nameVarchar(200 )、report _ client varchar (200 )和report _ city varchar (200 )。

65200200200(*2=12001000 )报告1071错误。 如果将report_city更改为varchar(100 ),则会成功创建索引。

但是,如果表是UTF8字符集,则无法创建索引,因此将其乘以3。

ky ` idx _1` (包名称`,storename `,app_name `,version `,category `,app_link_hash ` )

所有字段类型都是utf8,乘以3将超过1000。

我制作的表格超过了字段的长度,数据不动,所以用了一个小技巧:

1,applink字段需要200以上,使用后一定会超过。 解决方法:将APP用MD5

2,kettle插入时分析唯一的key。 字段之间的关系不会显示在索引中,因为许多字段可以协同工作以唯一标识字段。 kettle将被插入而不匹配此字段

3 )更改为小字段的兼容类型。 如果字段内容允许,即包含的内容较少,例如utf8类型,则修改为gbk可以省略一个字段。 但是,数据的内容必须包含在gbk中。 否则,无法识别内容,插入也没用。

对于索引键中不包含的字段,请自由设置值。

因为我的内存不足,所以编制索引时使用的字段可以很少,但是效率很低

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。