Постоянное сканирование Sql server-уточнение?

Я читал этой статье постоянное сканирование, но до сих пор не понимаю, когда он будет использоваться ( люди прокомментировали автору, что его статья до сих пор не понята):

MSDN:

оператор Constant Scan вводит одну или несколько постоянных строк в запрос. Вычислительный скалярный оператор часто используется для добавления столбцов в строку произведено постоянн оператором развертки.

очень непонятный.

например :

Почему SELECT TOP 1 GETDATE() выдает :

enter image description here

пока select getdate() ничего не производит. ( в плане исполнения).

Я думаю, это связано с постоянным наблюдением. Итак:

вопрос :

  • что такое постоянное сканирование
  • зачем ему нужно что-то сканировать , если это константа, и
  • почему select top 1 getdate() дают разные результат, чем простой select getdate()

1 ответов


, потому что большинство операторов, которые используются при выполнении запроса, указанного в части одного или нескольких множеств входных и выходных множеств, логично, что если вы напишите запрос, который требует использования одного из этих операторов, то вам лучше убедиться, что входные данные, которые вы представить, что оператор-это набор строк.

таким образом, оператор постоянного сканирования является специальным оператором, который может принимать один или несколько скалярных входов и генерировать набор строк.

это делает составление операторов намного проще.


почему select top 1 getdate() выход другой результат, чем обычная select getdate()

потому что вы попросили использовать TOP оператора. И TOP оператор ожидает ввода строк.


почему я думаю, что сосредоточение на выступлении не имеет значения:

SET STATISTICS TIME ON
GO
SELECT TOP 1  GETDATE()
GO
SELECT GETDATE()

сообщения:

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(1 row(s) affected)

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(1 row(s) affected)

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

то есть, мы даже не можем получить меру количество времени, которое требуется для выполнения любого оператора.