La ORDER BYclause de la SELECTdéclaration est redondante.
Il est redondant car les lignes qui seront insérées, si elles doivent être triées , sont quand même triées.
Créons un cas de test.
CREATE TABLE #Test (
    id INTEGER NOT NULL
);
CREATE UNIQUE CLUSTERED INDEX CL_Test_ID ON #Test (id);
CREATE TABLE #Sequence (
    number INTEGER NOT NULL
);
INSERT INTO #Sequence
SELECT number FROM master..spt_values WHERE name IS NULL;
Activons l'affichage du texte des plans de requête réels, afin que nous puissions voir quelles tâches sont effectuées par le processeur de requêtes.
SET STATISTICS PROFILE ON;
GO
Maintenant, plaçons INSERT2K lignes dans la table sans ORDER BYclause.
INSERT INTO #Test
SELECT number
  FROM #Sequence
Le plan d'exécution réel de cette requête est le suivant.
INSERT INTO #Test  SELECT number    FROM #Sequence
  |--Clustered Index Insert(OBJECT:([tempdb].[dbo].[#Test]), SET:([tempdb].[dbo].[#Test].[id] = [tempdb].[dbo].[#Sequence].[number]))
       |--Top(ROWCOUNT est 0)
            |--Sort(ORDER BY:([tempdb].[dbo].[#Sequence].[number] ASC))
                 |--Table Scan(OBJECT:([tempdb].[dbo].[#Sequence]))
Comme vous pouvez le voir, il y a un opérateur de tri avant que l'INSERT réel ne se produise.
Maintenant, effaçons le tableau et INSERT2k lignes dans le tableau avec la ORDER BYclause.
TRUNCATE TABLE #Test;
GO
INSERT INTO #Test
SELECT number
  FROM #Sequence
 ORDER BY number
Le plan d'exécution réel de cette requête est le suivant.
INSERT INTO #Test  SELECT number    FROM #Sequence   ORDER BY number
  |--Clustered Index Insert(OBJECT:([tempdb].[dbo].[#Test]), SET:([tempdb].[dbo].[#Test].[id] = [tempdb].[dbo].[#Sequence].[number]))
       |--Top(ROWCOUNT est 0)
            |--Sort(ORDER BY:([tempdb].[dbo].[#Sequence].[number] ASC))
                 |--Table Scan(OBJECT:([tempdb].[dbo].[#Sequence]))
Notez qu'il s'agit du même plan d'exécution que celui utilisé pour l' INSERTinstruction sans la ORDER BYclause.
Maintenant, l' Sortopération n'est pas toujours requise, comme Mark Smith l'a montré dans une autre réponse (si le nombre de lignes à insérer est faible), mais la ORDER BYclause est toujours redondante dans ce cas, car même avec une explicite ORDER BY, aucune Sortopération n'est générée par le processeur de requêtes.
Vous pouvez optimiser une INSERTinstruction dans une table avec un index cluster, en utilisant un journal minimalement connecté INSERT, mais cela est hors de portée pour cette question.
Mise à jour le 2011-11-02:  comme l'a montré Mark Smith , les INSERTs dans une table avec un index clusterisé ne nécessitent pas toujours d'être triés - la ORDER BYclause est également redondante dans ce cas, cependant.