2014-09-30 104 views
1

我們的數據庫團隊剛剛創建了一個數據庫視圖,該視圖將兩個表結合在一起以提取記錄。但是,這不會從其他表中提取所有其他所需的數據。此視圖只有在搜索中使用的字段。該視圖不具有在報告中顯示的所有字段。創建數據庫視圖vs創建休眠映射 - 性能

我的理解是,視圖最好用於將所有必需的表格(並非所有情況下都包含在內)和必填字段發送到報表/演示文稿中。我們將把這個視圖映射到Hibernate,並使用Hibernate來提取數據。 DB團隊認爲,你不需要所有的列和表,並指出我用Hibernate映射來完成所有這些工作。

我想知道什麼時候的觀點。或者可能是我沒有得到這個權利?!該視圖僅包含搜索的字段。

回答

1

像往常一樣,這取決於很多事情。

思考視圖(在你描述的上下文中)的最佳方式是作爲存儲的可重用選擇語句。它不必擁有最終結果所需的所有列,您仍然可以將它們與視圖連接起來,就像視圖是一個表一樣。這就是你的數據庫團隊建議的。

如果缺少的列是用於構建視圖的表的一部分,那麼您可能會遇到性能下降,因爲您將連接兩次而不是一次。這可能是一個壞主意。

在有疑問的情況下做了一個實驗:

寫的聲明,因爲它看起來,如果你使用的視圖。

然後編寫聲明,就像您用來創建您似乎更喜歡的視圖一樣。

確保兩者產生完全相同的結果。

測量兩個語句所需的時間。確保你需要測量獲得所有結果的時間,而不僅僅是前20個或者其他東西,因爲通常情況下,如果結果很大,提供第一行快的訪問路徑需要更長的時間才能獲得所有結果。

+0

如何在視圖中連接表與在Hibernate中做這件事? – 2014-09-30 16:16:46

+0

@KevinRave我不認爲我理解你的問題。 – 2014-09-30 16:20:42

+0

對不起。我想知道,性能明智,在Hibernate(POJO)中映射所有必需的表格,並在視圖(SQL)中加入它們。哪個更好? – 2014-09-30 16:34:30