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

Partitionierung nach Jahr vs. separate Tabellen namens Data_2011, Data_2010 usw

Aus interner Sicht sind die Methoden im Wesentlichen gleich.

Wenn Sie hinter den Kulissen eine datumsbasierte Partition erstellen, erstellt die SQL-Engine separate physische Tabellen für jede Partition und führt dann im Grunde eine UNION aus wenn Sie die Tabelle selbst abfragen.

Wenn Sie in Ihrer Abfrage für die partitionierte Tabelle einen Filter verwenden, der Ihrem Partitionierungsfeld entspricht (DateField sagen wir), dann kann die Engine direkt zu der Partition gehen, die Sie für die Daten benötigen. Wenn nicht, wird jede physische Tabelle in der logischen Tabelle nach Bedarf durchsucht, um die Abfrage abzuschließen.

Wenn Ihre Abfragen einen Datumsfilter beinhalten (was sich aus Ihrer Frage so anhört), kann ich mir keinen Vorteil für Ihre "benutzerdefinierte" Methode vorstellen.

Im Wesentlichen müssen Sie die Wahl treffen, möchten Sie für die gesamte Logik und alle Sonderfälle verantwortlich sein, die mit der Partitionierung verbunden sind, oder den Entwicklern von Microsoft vertrauen, die dies seit Jahrzehnten für Sie tun?

Wenn es für meine eigenen Zwecke ein eingebautes Framework für etwas gibt, das ich tun möchte, versuche ich immer, es zu verwenden. Es ist ausnahmslos schneller, stabiler und weniger fehleranfällig als eine „Roll-your-own“-Lösung.