Voici le scénario:Modification de l'indexation sur la table existante dans SQL Server 2000
SQL Server 2000 (8.0.2055)
Le tableau a actuellement 478 millions de lignes de données. La colonne Primary Key est une INT avec IDENTITY. Une contrainte unique est imposée sur deux autres colonnes avec un index non groupé. Il s'agit d'une application fournisseur et nous sommes uniquement responsables de la maintenance de la base de données.
Maintenant, le vendeur a recommandé de faire ce qui suit "pour améliorer les performances"
- Drop the PK et index en cluster
- Drop the index non cluster sur les deux colonnes avec l'UNIQUE CONTRAINTE
- Recréer le PK, avec un indice de NON CLUSTERED
- Créer un index clusterisé sur les deux colonnes avec l'UNIQUE CONTRAINTE
Je ne suis pas convaincu que c'est la bonne chose à faire. J'ai un certain nombre de préoccupations. En supprimant le PK et les index, vous allez créer un tas avec 478 millions de lignes de données. Ensuite, la création d'un INDICE CLUSTERED sur deux colonnes serait une tâche vraiment gigantesque. Est-ce que créer une autre table avec la même structure et le nouveau schéma d'indexation, puis copier les données, abandonner l'ancienne table et renommer la nouvelle serait une meilleure approche?
Je ne suis pas sûr non plus comment les processus stockés réagiront. Vont-ils continuer à utiliser le plan d'exécution mis en cache, étant donné qu'ils ne sont pas recompilés explicitement.
Je ne suis tout simplement pas capable de comprendre quel type d '«amélioration des performances» ce changement apportera. Je pense que cela aura effectivement l'effet inverse.
Toutes les pensées sont les bienvenues.
Merci à l'avance,
Raj
Merci. Quelle serait la meilleure approche du point de vue des temps d'arrêt? – Raj
Je serais enclin à déposer/créer des index ... mais avec 478 millions de lignes, vous pouvez aussi le faire plutôt que le tester, peut-être :-) – gbn
Assurez-vous d'avoir assez d'espace disque: 2 x espace table ou plus (la reconstruction d'un index clusterisé copiera les données de ... à ...), 1,5 à 2 x l'espace d'index (définissez le tri dans tempdb si vous le pouvez), et je pense qu'il y a aussi un hit sur le fichier journal des transactions. Si vous avez une configuration de test assez grande, essayez-la d'abord, ne serait-ce que pour estimer ce que sera votre temps d'arrêt de production. –