SQL 百万级别记录优化之 -- where 字段加索引

update TIMAGEDATA_TD set ASSIGNTOSERVERID = 1 where IMAGEFILEID in ( select IMAGEFILEID from TIMAGEREG_TD where UPLOADDATAFILEID = 187636 );

    TIMAGEDATA_TD 是一个百万以上级别的大表(实际上达到了千万级别)
    TIMAGEREG_TD  是一个相对来说小数量级的表,大概十万级别,且存在删除记录的业务逻辑

在索引优化之前,查询到的结果如下:

记录数量

优化前查询时间

可以看到这里 千万左右的记录已经达到了 可怕的23 秒,因为sql 中是比较简单的,
没有过多的表间,字段间关联,所以不涉及到不该有的性能下降点,因此根据经验23秒相当非常态!!!
因为这里sql很简单,第一点就想到了是索引的问题,然后问过同事之后,
果然这个是由于新业务改造新加入的字段,不出所料,一查果然没有索引,所以只好加上索引 : 
CREATE INDEX TIMAGEDATA_TD_IMAGEFILEID ON TIMAGEDATA_TD (IMAGEFILEID ASC)
附上加上索引后的查询结果:

优化后的查询时间

转载于:https://my.oschina.net/samuelzuuka/blog/733021

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值