0

如何在 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 获取产品),这样它就不会太慢?

4

0 回答 0