1 votes

Ajout d'une clé primaire à une grande table sur un serveur de base de données partagé

J'ai une grande base de données de codes postaux utilisés dans les recherches de proximité. Il y a environ 1 million d'enregistrements. Je n'ai pas ajouté la clé primaire à la table, et maintenant je dois l'ajouter parce que les recherches prennent environ 3 secondes à cause du balayage complet de la table. Lorsque j'essaie de générer un script pour l'ajouter dans SSMS, l'opération est interrompue parce qu'elle crée une nouvelle table et que les données sont importantes. Des idées ?

4voto

tvanfosson Points 268301

Assurez-vous que le délai d'exécution dans votre SSMS Options/Query Execution est fixé à 0 (pas de délai). Utilisez ensuite une requête similaire à la suivante en remplaçant les noms des tables/colonnes/clés par les vôtres. Ajustez les paramètres comme vous le souhaitez.

ALTER TABLE tableName WITH NOCHECK 
ADD CONSTRAINT PK_tableName PRIMARY KEY CLUSTERED (columnName)
WITH (FILLFACTOR = 75, ONLINE = ON, PAD_INDEX = ON)

Référence

1voto

Cade Roux Points 53870

Générer le script, le coller dans une requête et l'exécuter. Assurez-vous que votre SSMS n'est pas configuré pour avoir un délai d'exécution dans les options.

0voto

HLGEM Points 54641

Pourquoi ne pas créer un index unique ?

-1voto

Suroot Points 3079

ALTER TABLE ADD PRIMARY KEY (,etc...)

Doit fonctionner avec MySQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X