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)
附上加上索引後的查詢結果: