Почему добавление «ORDER BY» значительно сокращает время обработки запросов? - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть SQL-запрос, как показано ниже, без последнего оператора ORDER BY, запрос выполняется около 1 минуты, и с этим оператором запрос завершается через 2 секунды.

SELECT A.C2, B.C2
FROM
(
  SELECT C1, C2
  FROM A
  WHERE C3 = something AND C2 = somethingelse
  INNER JOIN
  B
  ON
  A.C1 = B.C1
)
ORDER BY B.C2

Если посмотреть на план выполнения, кажется, что добавление оператора ORDER BY вызывает параллелизм.

При "ORDER BY" QueryPlan имеет вид: DegreeOfParallelism = "4" MemoryGrant = "94176" CachedPlanSize = "184" CompileTime = "35" CompileCPU = "35" CompileMemory = "1728"

Без "ORDER BY" QueryPlan имеет вид: QueryPlan DegreeOfParallelism = "1" MemoryGrant = "2432" CachedPlanSize = "120" CompileTime = "57" CompileCPU = "57" CompileMemory = "2488"

Я не мог понять причину сцены. Обычно я предполагаю, что ORDER BY увеличит время обработки запроса.

[Изменить]

Нет индекса B.C2, и он не является первичным или кластерным ключом. A.C1 является первичным ключом и кластерным индексом. A.C2 - пространственный индекс. A.C3 является некластеризованным индексом. B.C1 - первичный ключ и кластерный индекс.

В таблице А. имеется 4 столбца и 40 миллионов строк. В таблице B 2 столбца и 8 миллионов строк.

Я использую Microsoft SQL Server 2008.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...