J'ai une vue sur deux tables (stockées en utilisant SQL 2008) avec des millions d'enregistrements.Vue matérialisée ou CDC?
CREATE VIEW VwSalesAge
AS
SELECT
Transactions.ID
,Transactions.Amount
,Customer.ID
,Customer.Name
,Customer.Age
FROM Transactions
INNER JOIN Customer
ON Transactions.CustomerID=Customer.ID
Maintenant, je veux utiliser une table physique pour stocker ces informations pour éviter scannig de grandes tables pour les requêtes encore plus petites comme
SELECT *
FROM VsSalesAge
WHERE Customer.ID = 123
Alors, qui est la meilleure approche en termes de performance.
- UTILISATION Change Data Capture sur les deux tableaux et identifier les changements et les appliquer sur la nouvelle table « TbSalesAge »
- Utilisez une vue matérialisée au lieu d'une table physique
- Une autre méthode (expliquer s'il vous plaît ...)
PS: Je ne ai pas besoin réplique en temps réel
Quel est le problème avec est sous la forme normalisée actuelle? – TFD
Étant donné la définition de la vue présentée, le 'SELECT' devrait retourner instantanément. Si ce n'est pas le cas, vous devez absolument regarder vos index. Un index de couverture sur «CustomerID, ID, montant» et «ID, nom, âge» devrait vous prendre un long chemin. –
+ 1 pour le commentaire de Lieven, l'index sur Id devrait faire le travail – 2lazydba