使用外键

时间:2016-07-14 19:27:37

标签: sql sql-server foreign-keys database-partitioning partitioned-view

如何在具有外键的两个表(每个父级和子级1TB)上对SQL Server(标准版)进行分区视图,而不更改从应用程序调用的查询,以便查询效率不高?

这是架构(简化):(或SQL Fiddle

CREATE TABLE Product
(`idProduct` int, 
 `DateProduced` datetime, 
 `productName` varchar(7), 
 `description` varchar(55),
  PRIMARY KEY (`idProduct`)
);

CREATE TABLE ProductPhoto
(`idProduct` int primary key,
 `Image` BLOB);


CREATE TABLE ProductExport
( `idExport` int primary key,
  `idProduct` int, 
 `TimeExported` datetime, 
 `quantity` int);

alter table ProductPhoto
add constraint fk1_Photo foreign key (`idProduct`) references Product(`idProduct`);

alter table ProductExport
add constraint fk1_Export foreign key (`idProduct`) references Product(`idProduct`);

以下是可能性:

a)如果我基于DateProduced在表Product上创建分区视图(分区将按月分别),我无法有效地搜索表的主键(SELECT * FROM Product WHERE idProduct=3将在表Product的所有分区中搜索)。< / p>

b)如果我基于idProduct对表Product进行分区视图,我无法有效地搜索DateProduced。

我也有问题如何对两个表进行分区。

是否有可能以某种方式为两个表创建一个合理的分区视图,查询没有大的变化(在日期之间搜索所有产品,按productId获取产品),这样它就不会太慢?

0 个答案:

没有答案