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:
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. timestamp
fait partie de l'index PK clustered, en fait c'est la première position du PK / index. 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.