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

優化後的查詢時間

相關文章
相關標籤/搜索