Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Indizierte Ansicht vs. Indizes auf Tabelle

Eine indizierte Ansicht verursacht die gleichen Probleme wie ein Index für die Spalte, da für indizierte Ansichten with schemabinding erforderlich ist , die es direkt an die Tabelle binden und es Ihnen verbieten, das Schema dieser Tabelle in irgendeiner Weise, Form oder Form zu ändern/zu ändern. Dazu gehört die Größenänderung einer Spalte (z. B. von varchar(50) zu varchar(255) ), Ändern des Datentyps einer Spalte (z. B. -von double zu decimal(18,5) ) usw. Ich habe gesehen, dass sie aufgrund dieser Tatsache viele unerwartete Kopfschmerzen verursacht haben.

Mein Vorschlag ist, eine gespeicherte Prozedur oder ein SSIS-Paket einzurichten, das eine Berichtstabelle für Sie erstellt, die etwa jede Stunde ausgeführt wird. Auf diese Weise können Sie die ewig liebende Hölle daraus indizieren und alle Leistungsvorteile genießen, die sie hervorbringt. Ich scheue mich davor, von einem aktiven, in Bearbeitung befindlichen System zu berichten. Ich habe tatsächlich noch keinen Fall gesehen, in dem dies erforderlich ist. Für Berichtszwecke reichen stundenalte Informationen in der Regel absolut aus, um die Arbeit zu erledigen.