[英]Create partitioned view on linked tables
我正在學習SQL Server中的分區表,並且陷入了這個問題:我有2個鏈接表-父級和子級。 其中之一(或什至兩者)都是分區表。 當我實現分區視圖時,是否需要在其中包含2個相同的列-引用父表(來自子級)和被引用的主鍵(來自父級)的一列?
自從MSDN說:
列規則:
每個成員表中的所有列都必須包含在選擇列表中。 SELECT * FROM是可接受的語法。
但是視圖應該使(鏈接的)表的表示更加容易,因此並非所有列都應包含在視圖中。
就我而言,根據MSDN,我必須將兩個表的所有列都包含在視圖中(其中兩個是相同的)。 在我看來,這不是很合乎邏輯的解決方案。
例如:
數據庫1:
create table manufacturer
(
id int,
manufacturer_name varchar(35),
PRIMARY KEY (id),
CONSTRAINT CHK_manufacturer_id
CHECK (id < 1000)
);
create table product
(
pid int,
product_name varchar(35),
mid int,
PRIMARY KEY (pid),
CONSTRAINT CHK_product_pid
CHECK (pid < 1000),
CONSTRAINT FK_product_mid
FOREIGN KEY (mid)
REFERENCES manufacturer(id)
);
數據庫2:
Same tables with CHECK constraints (id >= 1000)
視圖:
create view dist_view as
select *
from db1.product p1
inner join db1.manufacturer m1 on p1.mid = m1.id
UNION ALL
select *
from db2.product p2
inner join db2.manufacturer m2 on p2.mid = m2.id
所以視圖看起來像
pid | prod_name | mid | id | manufact_name
中= ID。
在我看來,這樣的視圖與使用視圖的主要優勢(表的簡單表示)相矛盾。 所以我想有一個這樣的觀點:
(pid) | prod_name | manufact_name
我該如何解決?
首先,您可能不應該學習分區視圖。 進行分區的正確方法是使用分區表,而不是視圖。
在文檔中重復此步驟。 例如:
注意
對一台服務器本地數據進行分區的首選方法是通過分區表。 有關更多信息,請參見分區表和索引。
(我注意到,您的查詢全部在一台服務器上。)
其次,通過union all
基表來創建分區視圖。 您正在使用join
,所以這只是一個常規視圖。
我建議您重新評估數據結構,並多考慮分區表而不是分區視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.