Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Vue indexée vs index sur table

Une vue indexée causera les mêmes problèmes qu'un index sur la colonne, car les vues indexées nécessitent with schemabinding , qui le lient directement à la table, vous interdisant de changer/modifier le schéma de cette table de quelque manière que ce soit. Cela inclut le redimensionnement d'une colonne (par exemple, à partir de varchar(50) en varchar(255) ), en changeant le type de données d'une colonne (par exemple-from double en decimal(18,5) ), etc. Je les ai vus causer beaucoup de maux de tête inattendus à cause de cela.

Ma suggestion est de configurer une procédure stockée ou un package SSIS qui créera pour vous un tableau de rapport exécuté toutes les heures environ. De cette façon, vous pouvez indexer l'enfer toujours amoureux et profiter de tous les avantages de performance qu'il produit. J'hésite à faire des rapports à partir d'un système en direct et en cours. En fait, je n'ai pas encore vu le cas où cela est nécessaire. À des fins de création de rapports, des informations datant d'une heure sont généralement tout à fait suffisantes pour faire le travail.