如何在具有外键的两个表(每个父级和子级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获取产品),这样它就不会太慢?