1. 程式人生 > >在sql語句中in關鍵字提示查詢效能

在sql語句中in關鍵字提示查詢效能

這幾天一個模組即將結束,便開始進行一些優化,以提升效能。發現一個sql語句的查詢速度是6秒,這明顯讓使用者等待過長。

    語句其實挺簡單的,上學的時候經常這麼寫,而且記得好多教科書中也是這麼寫的。

簡要形式:

SELECT t1.field1,t1.field2,t1.field3 from t1,t2 where t1.pid = t2.fid and t2.ch='%123456%'

這裡t1表和t2表是相互關聯的,

分析這段sql語句,為什麼會耗費這麼長的時間呢?該怎麼優化呢?

t2表中有大量的資料,要是將2個表做等值關聯,等於建立了一個巨大的表,然後在這個巨大的表中做查詢,怪不得這麼慢呢。

要是能減小等值關聯後的表大小,就可以好很多了。所以想到了in關鍵字

將sql修改為:

SELECT t1.field1,t1.field2,t1.field3 from t1 where t1.pid in (select fid from t2 where t2.ch='%123456%')

執行新的sql,耗費時間為3秒。