数据库表定义好索引未生效

日常开发中,经常会遇到这个问题,明明我已经定义好了索引,在开发环境、测试环境、准生产环境执行查看执行计划,都没有问题,但是一上到生产环境,无效。丝毫没有改善效果。

为什么?

表面现象:生产环境数据库和其他三个环境是不一样的,所以才会有这个问题。即使准生产接近生产环境,但是数据库除非实时同步或者频繁定期同步生产数据库,否则还是不一样。

深入:为什么同一个表,同一个索引,只是数据多少的问题,就导致同一个查询语句执行计划不同?一个走索引,速度飞快。另一个不走索引,慢如蜗牛?

结论:索引所在列,或者组合索引所在列,数据分布有问题,导致数据库算法认为使用索引不如用其他方式的执行计划来处理。

这是一个常见问题,很多数据库设计规范上有说明,索引要加在合适的位置,比如一张1亿条记录的大表,你把索引放在IsDelete字段上,而这个字段只有两个值,0或1,有何用?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值