2013-03-14 75 views
0

我在單個database中有多個schemas從單個數據庫中的多個模式中檢索數據

說,

  • DBTEST(數據庫)

    1. SCH001(schema1)

    2. SCH002(SCHEMA2)

同樣,我有一個名爲Tbl的表,它存在於上面給出的兩個模式中。從表中SCH001.tblSCH002.tbl通過使用像下面這樣的union all關鍵詞
現在我已經檢索到的數據,

select * From SCH001.tbl union all select * From SCH002.tbl 

上述查詢正在與任何問題,但我的老闆要求我使用一些其他技術來達到相同的效果(所有工會/聯盟)。所以我想問的是, 聯盟是否有任何補救措施可以在我的情況下得到相同的結果?如果不是的話,請告訴我們爲什麼在這種情況下Union不能被替換的原因。

+2

我會問這個問題反過來根據其仍是一個聯盟。爲什麼*不*使用UNION ALL? – 2013-03-14 07:43:11

+0

如果你的老闆非常聰明,也許他會告訴你你應該使用什麼技巧?如果他不知道,也許他應該安靜。你的解決方案是好的。工會不能被取代...讓我想想...因爲這是你如何從兩個表中獲取數據? – 2013-03-14 07:52:50

+0

在'MySQL'中有'UNION'之前,我們必須加入一個虛擬表。然而,這是一個混亂,並不推薦十多年。 – Wrikken 2013-03-14 08:02:49

回答

2

如果你的老闆認爲它的醜陋使用這個工會的所有(所有)時間,爲什麼不看它呢? 只是引用兩者結合部分的所有領域,並提出以此爲組合視圖 (我說這導致其一般不好用*在視圖中)

我不知道,如果你能指數這樣的看法,然而它的正確價值退房, 我相信你必須使用一個架構只有當做索引的意見,但我不確定這 (但如果可能,這將是一個更好的解決方案比「只是」聯盟)

(新的那個區域) :編輯:你不能(在微軟的SQL)使物化競爭ws在一個工會,和/或從而在不同的模式,(他們也模式綁定)

我個人會使用視圖,它只是一個很好的方式給你的數據編程接口,你可以取代一天!。 :編輯:

但事實是......引擎蓋

+1

在「創建視圖」中使用*沒有任何區別。視圖定義將存儲創建視圖時存在的列的列表。 '*'不會**被存儲。 – 2013-03-14 08:35:52

+1

你是對的,我想這是我的個人偏好,不要使用*除非測試/查找數據 – bonitzenator 2013-07-11 09:50:14