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

Gruppierte Indizes für Nicht-Identitätsspalten, um Masseneinfügungen zu beschleunigen?

Nun, ich habe es auf die Probe gestellt, und das Einfügen eines Clustered-Index in die beiden "Chunk-definierenden" Spalten erhöht die Leistung meiner Tabelle.

Das Einfügen eines Chunks ist jetzt relativ schnell im Vergleich zu der Situation, in der ich einen gruppierten IDENTITY-Schlüssel hatte, und ungefähr so ​​​​schnell, als hätte ich keinen gruppierten Index. Das Löschen eines Chunks geht schneller als mit oder ohne Clustered Index.

Ich denke, dass alle Datensätze, die ich löschen oder einfügen möchte, garantiert alle zusammen auf einem bestimmten Teil der Festplatte liegen, macht die Tabellen schneller - scheint mir logisch.

Aktualisieren :Nach einem Jahr Erfahrung mit diesem Design kann ich sagen, dass es für diesen Ansatz notwendig ist, einen regelmäßigen Neuaufbau aller Indizes zu planen (wir tun dies einmal pro Woche). Andernfalls werden die Indizes sehr schnell fragmentiert und die Leistung geht verloren. Trotzdem sind wir gerade dabei, auf ein neues Datenbankdesign mit partitionierten Tabellen umzustellen, das im Grunde in jeder Hinsicht besser ist - bis auf die Lizenzkosten für den Enterprise Server, aber das haben wir inzwischen schon wieder vergessen. Zumindest habe ich.