2013-01-06 27 views
1

在Db跟蹤中,有一個查詢需要很長時間。可以解釋它的含義。看起來這是非常通用的oracle查詢,並且不涉及我的自定義表格。

select condition from cdef$ where rowid=:1; 

發現在TRC文件(DB跟蹤)和一個在所有多處相同的查詢有經過時間的巨量。那麼,如何避免這麼長時間才能解決問題呢?我使用11g版本的Oracle。

回答

3

你說得對,那是Oracle遞歸SQL的一個例子,它是針對數據字典運行的語句來支持我們的應用程序SQL。該特定語句是Oracle運行查詢以獲取CHECK約束的搜索條件。如果您在具有檢查約束的表中插入或更新行,您會看到很多。

實際的聲明不應該花太長時間才能運行,所以它不太可能成爲性能問題的根源。除非你使用硬編碼值運行大量插入語句。每次分析新的插入或更新語句時,Oracle都會運行該查詢。如果你不使用綁定變量,這將變得昂貴。