Suppression rapide de nombreuses lignes dans datatables de l'entrepôt de données

Dans SQL Server 2008, j'ai des millions de lignes de données qui doivent être supprimées. Ils sont dispersés à travers une poignée de tables. La suppression prend jusqu'à 20 secondes, ce qui, je pense, est un moyen de ralentir! Les données à supprimer sont identifiées par une colonne d' timestamp . Voici ce que j'ai fait jusqu'ici pour optimiser:

  • Utilisation du niveau d'isolement read uncommitted . Je me fiche des transactions. Si nous échouons, l'user relancera l'opération de suppression. Et de nouveldatatables sont garanties pour ne pas avoir l' timestamp nous supprimons.
  • Suppression des tables feuille avant les tables parent.
  • La colonne timestamp fait partie de l'index PK clustered, en fait c'est la première position du PK / index.
  • Chaque table est vidée à l'aide d'une boucle qui supprime les 200 000 inputs supérieures afin de réduire la surcharge du journal des transactions.
  • Ni les E / S ni le CPU ne sont dépassés sur le server

Qu'est-ce que j'ai oublié?

Aussi, je suis dans le doute de l'effet de déplacer la colonne d'horodatage à la première position dans le PK. Après cela, dois-je réorganiser les tables ou SQL Server est assez intelligent pour le faire lui-même. Ma compréhension de l'index clusterisé est que, puisqu'il définit la disposition physique des lignes, il est forcé de réorganiser datatables. Mais nous ne nous plaignons pas du fait que l'évolution de l'indexing en cluster a pris du time.