SQL Server insérant grand nombre de lignes à un tableau avec des valeurs par défaut et de l'identité de ses colonnes

J'ai besoin d'insérer sur 6400000 les lignes d'une table avec 2 colonnes

CREATE TABLE [DBName].[DBO].[BigList] 
(
[All_ID] [int] identity(1,1) NOT NULL, 
[Is_It_Occupied] [int] default(0) not null 
)

Je suis en utilisant le code suivant aujourd'hui, qui est très longue d'environ 100 minutes.

    SET @NumberOfRecordsToInsert = 6400000;
WHILE (@NumberOfRecordsToInsert > 0)
BEGIN
    INSERT [DBName].[DBO].[BigList] DEFAULT VALUES;
    SET @NumberOfRecordsToInsert = @NumberOfRecordsToInsert - 1
END

Quelqu'un aurait-il une meilleure façon de le faire?

Est-il un indice sur cette table?
Avez-vous envisagé de déclarer Is_It_Occupied que PEU?
Qu'en est FACTEUR de REMPLISSAGE de votre base de données?
Est la base de données assez grande pour contenir la table sans auto croissante au cours de l'insertion? Vous pouvez obtenir une augmentation de la performance par pré-allouer assez d'espace pour contenir les données (log) pour l'ensemble de la table, avant de commencer le processus d'insertion. Si vous surveillez le serveur (à l'aide de l'analyseur de performances, etc.) tandis que les insertions sont passe, vous pouvez regarder "journal de la croissance" et "base de données à grandir", les événements, etc. pour voir si elles se produisent trop souvent (et avoir une incidence défavorable de la performance).

OriginalL'auteur Naresh | 2013-12-01