A ORDER BYcláusula na SELECTdeclaração é redundante.
É redundante porque as linhas que serão inseridas, se precisarem ser classificadas , são classificadas de qualquer maneira.
Vamos criar um caso de teste.
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;
Vamos ativar a exibição de texto dos planos de consulta reais, para que possamos ver quais tarefas são executadas pelo processador de consultas.
SET STATISTICS PROFILE ON;
GO
Agora, vamos INSERT2K linhas na tabela sem uma ORDER BYcláusula.
INSERT INTO #Test
SELECT number
FROM #Sequence
O plano de execução real para esta consulta é o seguinte.
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]))
Como você pode ver, há um operador Sort antes que o INSERT real ocorra.
Agora, vamos limpar a tabela e INSERT2k linhas na tabela com a ORDER BYcláusula
TRUNCATE TABLE #Test;
GO
INSERT INTO #Test
SELECT number
FROM #Sequence
ORDER BY number
O plano de execução real para esta consulta é o seguinte.
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]))
Observe que é o mesmo plano de execução usado para a INSERTinstrução sem a ORDER BYcláusula
Agora, a Sortoperação nem sempre é necessária, como Mark Smith mostrou em outra resposta (se o número de linhas a serem inseridas for baixo), mas a ORDER BYcláusula ainda é redundante nesse caso, porque, mesmo com uma explícita ORDER BY, nenhuma Sortoperação é gerada pelo processador de consultas.
Você pode otimizar uma INSERTinstrução em uma tabela com um índice clusterizado, usando um registro mínimo INSERT, mas isso está fora do escopo desta pergunta.
Atualizado em 11/11/2011: como Mark Smith mostrou , os INSERTs em uma tabela com um índice clusterizado nem sempre precisam ser classificados - a ORDER BYcláusula também é redundante nesse caso.