OLTP應用最佳化SQL方法思路思考

sembh發表於2012-10-07

OLTP應用最佳化SQL思路:由小到大,從限制性最強返回記錄最少的連線開始,基本採用巢狀迴圈連線技術,依次完成其它表的連線,並在訪問每張表時,合理使用索引,特別是複合索引技術。

具體方法步驟:(1)限制性最強的表作為驅動表,條件欄位應該有索引,包括主鍵,唯一索引,複合索引等。(2)考慮原則:在每次連線操作之後,儘量保證返回記錄數罪少,再傳遞給下一個連結操作。(3)每次連線基本採用巢狀迴圈連線技術。(4)儘量透過在被驅動表的連線欄位上的索引,訪問被驅動表。(5)如果被驅動表上還有其它限制性條件,可以遵循複合索引建立原則,建立合適的複合索引。(6)全表掃描可能也是合理的,比如若干小表,程式碼表的訪問。(7)依次類推,順序完成所有表的連線操作。

要點:(1)能不寫子查詢,儘量不寫子查詢,而是直接編寫多表連線,因為這樣會導致oracle採用錯誤的執行路徑。(2)in和exists的使用場景:如果限制性強的條件在子查詢,用in。如果限制性強的條件在主查詢,用exists.(3)在一些情況下,會導致索引失效的語句:1 不要輕易在欄位前加函式,比如 to_char(JDRQ,'yyyymmdd') between .....改為 JDRQ between to_date(....)...。2 儘量不要將欄位嵌入到表示式中,如JDRQ+7

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24214296/viewspace-1059540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章