Разделенное представление на большую родительскую и дочернюю таблицу с внешним ключом
Как можно выполнить многораздельное представление на SQL Server (Standard edition) для двух таблиц с внешним ключом - родительским и дочерним 1 ТБ каждая - без изменения запросов, вызываемых из приложения, чтобы запросы не были неэффективными?
Вот схема (упрощенная): (или на 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`);
Вот возможности:
а) если я создаю секционированное представление для таблицы Product на основе DateProduced (каждый раздел будет по месяцам), я не смогу эффективно выполнять поиск по первичному ключу таблицы (SELECT * FROM Product WHERE idProduct=3
будет искать во всех разделах таблицы Product).
б) если я делаю многораздельное представление таблицы Product на основе idProduct, я не могу эффективно выполнять поиск по DateProduced.
У меня также есть проблема, как сделать обе таблицы разделенными.
Можно ли каким-то образом создать разумное многораздельное представление с обеими таблицами без значительных изменений для запросов (поиск по всему продукту между датами, получение продукта по productId), чтобы оно не было слишком медленным?