mysql中可以为同一个列创建不同名称的索引

最近工作一直做的是数据迁移方面的工作,在数据库表中核对索引时发现mysql中的对一个字段创建了两个不同名字的索引,这个也不是复合索引,只是一个普通的索引。当初不明白如何这样做。这样是不是有问题呢,经过了解,oracle是不允许的,mysql和sqlserver是允许这样做额,为何要这样做呢?这样做弊端有哪些呢?先看下具体的索引所示:

在这里插入图片描述
再看下查询的时候走的索引:
在这里插入图片描述
这里默认走了第一个那么第二个就是没有用的,所以这里建议去掉一个。
在这里插入图片描述
mysql为一个字段创建不同名称的索引值是允许的,但是不建议这样做,因为索引都是需要维护的,增删改涉及到了此列时原本要改一次的操作,现在就需要改多次了。浪费空间,浪费操作。(从ibd文件中能看出这个浪费)
这里再说一些关于索引的:
索引的原理: 索引是一个B+二叉树。从原理上说B+二叉树的特性 决定了对insert、update、delete、select的影响和作用。
索引优点:查询效率变快。
索引缺点:建立索引过多,会影响insert速度。
如果新insert一个值,会导致B+二叉树进行再平衡重整,这个过程B+二叉树进行重新整理,索引越大,索引越多,重新整理的时间花费越大。所以有时候再进行大批量insert插入时,我们会不建立索引,等数据全部insert完毕,再建立索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kay三石 [Alay Kay]

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值