2013-03-15 72 views
0

我有一個Oracle 11g數據庫的物化視圖,該數據庫應該包含許多行。檢查實例化視圖是否包含任何行的最快方法

找出視圖中是否有任何行的最快方法是什麼?我對多少行不感興趣,只是它包含一行或多行。

我正在做一個COUNT(*)查詢,但這需要很長時間才能運行。有什麼建議麼?

請注意,這個問題是不是完全不像這個其他問題:The fastest way to check if some records in a database table?

+0

你的表中有一個auto_increment ID值嗎?如果是這樣,請選擇ID = 1的地方? – Borniet 2013-03-15 11:31:37

回答

1

你給的參考答案會爲你工作或:

select /*+ NO_REWRITE */ count(*) from your_mview where rownum = 1; 

這將停止掃描,一旦發現1排。

+0

我剛試過這個,花了920秒(!)。如果一旦找到一行就應該返回,我認爲我的問題在其他地方...感謝您的幫助@DazzaL。 – mattyB 2013-03-15 12:04:52

+0

@mattyB它可能是你的MVIEW表段已經做了很多刪除操作,並且表格在開始時有很多空白塊。在MVIEW中根本沒有索引嗎?如果是的話,他們是否可以空或不可空列? – DazzaL 2013-03-15 12:13:31

+0

可能希望在此添加NO_REWRITE提示以防萬一。 – 2013-03-15 12:14:44

相關問題