2015-02-05 62 views
0

我真的不知道如何甚至要求我需要什麼。 所以我試着解釋我的情況。SQL替代視圖

我有一個相當簡單的sql查詢連接各種表,但我需要執行此查詢與一些不同的條件反覆。

查詢的執行時間大約爲0.25秒。 但我需要執行的所有查詢都需要15秒。 這是很長的路要走。

我需要的是一張表或視圖,它爲我保存了查詢結果,這樣我只需要從這張表中選擇而不是一次又一次地連接大表。

視圖不會真的有幫助,因爲它只會一遍又一遍地執行相同的查詢。我所知道的。

有沒有辦法讓東西像一個持有其數據的視圖,只要其源表沒有改變?如果真的有必要,只會更新和執行查詢?

+0

試過索引視圖嗎?您可以創建一個索引視圖,以迎合所有不同的條件,然後選擇查詢可以選擇它需要的子集。 – SoulTrain 2015-02-05 15:07:10

+2

根據您的DBMS,您可能想要查看物化視圖。你正在使用哪個DBMS? Postgres的?甲骨文?您還應該向我們展示您必須運行的查詢。 – 2015-02-05 15:07:22

+0

我在oracle 11g上工作,這些物化視圖看起來很有希望。 – ZSchneidi 2015-02-05 15:12:18

回答

2

我想,你所描述的非常好的擬合至

物化視圖

使用與承諾快速刷新。但是,您的查詢需要符合快速刷新的條件。

另一種使用

RESULT_CACHE

  • 它是自動當源表中的一個被改變無效。我會試着決定哪個套房更適合這個特定的任務。
+0

謝謝,我會給這兩種方法一試,看看哪一個表現最好。 – ZSchneidi 2015-02-27 11:20:06

1

我會爲此建議表值函數。定義這樣一個函數需要用PL/SQL進行編碼,但是如果函數是基於單個查詢的話就不那麼難。

您可以將這些功能看作參數化視圖的一種方式。

Here是開始瞭解它們的好地方。

+0

嗨,是不是這些表函數的問題,他們會執行每次我打電話給他們?這基本上是我試圖避免的。 – ZSchneidi 2015-02-05 15:25:08

+0

@ZSchneidi。 。 。表值函數應該針對輸入進行優化。物化視圖會導致在基礎表發生更改時維護數據集的開銷。此外,它並未針對使用一組參數的單個查詢進行優化。 – 2015-02-05 21:53:28