Как улучшить этот сценарий Transact-SQL для SQL Server 2005? - PullRequest
0 голосов
/ 26 января 2011

У меня есть этот скрипт: -

SELECT TOP 1
    column_01, 
    COUNT(column_01) OVER(),
    (SELECT TOP 1 COUNT(column_02) FROM table_01 WHERE status = 1 and Column_02 = 1)
FROM 
    table_01
WHERE 
    status = 1
ORDER BY column_02 desc, datetimestamp asc

Таблица_01 структура: -

column_01 int (primary key)
column_02 bit 
datetimestamp datetime

Чего я пытаюсь достичь: -

  1. Первая записьcolumn_01
  2. общее количество столбцов_01 (в зависимости от условия)
  3. общее количество столбцов_02 (в зависимости от условия)
  4. Порядок по datetimestamp, но если значение column_02 равно trueзапись должна прийти сверху.Вот почему я использую заказ по предложению.

Этот запрос делает то, что я хочу, но у меня есть ощущение, что есть много возможностей для улучшения запроса.Итак, как я могу улучшить этот запрос с точки зрения производительности и лучших практик?Спасибо

1 Ответ

1 голос
/ 26 января 2011

Вы можете избежать встроенного запроса, используя SUM, как указано ниже:

SELECT TOP 1
        column_01, 
        COUNT(column_01) OVER(),
    SUM(CASE WHEN column_02=1 THEN 1 ELSE 0 END) OVER()
    FROM 
        table_01
    WHERE 
        status = 1
    ORDER BY column_02 desc, datetimestamp asc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...