最佳化join語句:
Mysql4.1 開始支援SQL 的子查詢。這個技巧可以使用SELECT 語句來建立單一列的查詢結果,然後把這個結果當作篩選條件用在另一個查詢中。使用子查詢可以一次的完成很多邏輯上需要多個步驟才能完成的SQL 操作,同時也可以避免事務或表鎖死,而且寫起來也很容易。但是,在某些情況下,子查詢可以被更有效率的連接(JOIN)..
取代。
假設我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:
SELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
如果使用連接(JOIN).. 來完成這個查詢工作,速度將會快很多。特別是當salesinfo表中對CustomerID 建有索引的話,效能將會更好,查詢如下:
SELECT * FROM customerinfo LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.CustomerID
WHERE salesinfoinfo.CustomerID=salesinfo.CustomerID
WHERE salesinfoinfo.C . 之所以更有效率一些,是因為MySQL 不需要在記憶體中建立臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。
以上就是mysql優化join語句的內容,更多相關內容請關注PHP中文網(www.php.cn)!