navicat为mysql建立索引

本文介绍了在Navicat中为MySQL建立索引时遇到的' Specified key was too long...'错误,分析了该错误产生的原因——索引字段总体长度超过1000字节限制。提出了解决方案,包括调整字段长度、使用MD5转换过长字段、优化唯一键设计以及考虑字段类型转换。这些方法有助于在满足业务需求的同时提高数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引的目的是大大提高查询效率,还有读写效率。

kettle向sql里面插入,更新时,也要建立索引,可以大大提升处理时间。

但是建立索引报错:Specified key was too long; max key length is 1000 bytes

这是mysql中,索引字段的类型设置的总体过长,看一下fields里面字段类型,总体加起来不超过1000字节

注意,字段长度,是char长度乘以自身字段类型的位数,累加和不能超过限定的key长1000:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character

以GBK为例:
CREATE UNIQUE INDEX `unique_record` ON reports (`report_name`, `report_client`, `report_city`);
其中report_name varchar(200), report_client varchar(200), report_city varchar(200)
(200 + 200 +200) * 2 = 1200 > 1000,就会报1071错误,只要将report_city改为varchar(100)那么索引就能成功建立。


但如果表是UTF8字符集,那索引还是建立不了,因此要乘以3。

 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位长),一一对应,长度特定

### Navicat 16 中 MySQL 索引创建与使用的教程 #### 创建索引Navicat 16中,可以通过图形界面轻松地为MySQL数据库中的表创建索引。这不仅提高了查询效率,还简化了数据管理和维护工作。 要创建一个新的索引,在目标表格上右键单击并选择“设计表”。接着转到“索引”选项卡,点击左下角的加号按钮来新增一个索引条目[^2]。在此处可以指定索引名称以及所涉及的一列或多列字段名,并设置其唯一性属性等参数。 对于更复杂的场景,也可以直接利用SQL语句完成相同的操作: ```sql CREATE INDEX idx_name ON table_name (column_name); ``` 这条命令会在`table_name`上的`column_name`建立名为`idx_name`的新索引[^1]。 #### 查看现有索引 为了方便用户回顾之前定义过的索引结构,Navicat提供了直观的方式浏览已有的索引信息。只需要展开对应的表节点就能看到所有关联的对象,其中包括各个类型的索引项[^3]。 如果希望通过编程手段获取这些元数据,则可通过如下所示的标准SQL查询实现: ```sql SHOW INDEX FROM table_name; ``` 此指令会返回有关给定表内各索引的具体详情,如序号、类型及其覆盖范围等重要特性。 #### 删除不再需要的索引 当某些特定条件下原有索引变得冗余或是影响性能时,应当考虑将其移除。同样支持两种途径达成目的——GUI方式和DDL脚本形式。 通过导航树找到待处理的目标索引后,简单地选中它再按下Delete键即可快速消除;而采用SQL语法表达则更为简洁明了: ```sql DROP INDEX index_name ON table_name; ``` 上述代码片段能够有效地清除掉作用于某张具体表之上的某个单独索引实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值