39

Вопрос по sql-server – Что означает «ORDER BY (SELECT NULL)»?

Следующий SQL взят из Ицик Бен-Гана, который используется для создания таблицы чисел. Что этоorder by (select null) часть значит? Благодарю.

DECLARE @number_of_numbers INT;
SELECT @number_of_numbers = 100000;

WITH    a AS ( SELECT   1 AS i
               UNION ALL
               SELECT   1
             ),
        b AS ( SELECT   1 AS i
               FROM     a AS x ,
                        a AS y
             ),
        c AS ( SELECT   1 AS i
               FROM     b AS x ,
                        b AS y
             ),
        d AS ( SELECT   1 AS i
               FROM     c AS x ,
                        c AS y
             ),
        e AS ( SELECT   1 AS i
               FROM     d AS x ,
                        d AS y
             ),
        f AS ( SELECT   1 AS i
               FROM     e AS x ,
                        e AS y
             ),
        numbers
          AS ( SELECT TOP ( @number_of_numbers )
                        ROW_NUMBER() OVER ( ORDER BY ( SELECT   NULL
                                                     ) ) AS number
               FROM     f
             )
    SELECT  *
    FROM    numbers;

Спасибо!

  • Его также можно использовать в качестве заявления о намерениях, когда это фактически не требуется. Например, в книге учебных пособий Micrsoft «Запросы на Microsoft SQL Server 2012» они рекомендуют добавить ее к действительному запросу как «... если вы действительно после трех произвольных строк, это может быть хорошей идеей для добавьте предложение ORDER BY с выражением (SELECT NULL), чтобы люди знали, что ваш выбор преднамеренный, а не недосмотр. & quot;

    от
  • 66

    ROW_NUMBER требуетORDER BY пункт синтаксически. Вы не можете использовать это без одного.SELECT NULL взломать ошибку, не применяя какой-либо конкретный порядок. В этом случае нам не нужно применять какой-либо порядок, поэтому самым быстрым вариантом является использованиеSELECT NULL.

    Оптимизатор видит эту хитрость, поэтому он не требует затрат времени выполнения (это утверждение легко проверить, посмотрев план выполнения).