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

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

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

在索引优化以前,查询到的结果以下:性能

记录数量

优化前查询时间

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

优化后的查询时间

相关文章
相关标签/搜索