如何在 SQL Server(标准版)上对两个具有外键的表(父表和子表各 1TB)进行分区视图,而不更改从应用程序调用的查询,从而使查询效率不低?
这是架构(简化):(或在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 的所有分区中搜索)。
b) 如果我根据 idProduct 对表 Product 进行分区视图,我无法有效地按 DateProduced 搜索。
我也有问题如何使两个表都分区。
是否有可能以某种方式对两个表进行合理的分区视图,而查询没有大的变化(搜索日期之间的所有产品,通过 productId 获取产品),这样它就不会太慢?