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)
附上加上索引后的查询结果: