Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнение запросов  [new]
relief
Member

Откуда:
Сообщений: 1197
Есть 2 запроса делающих одно и тоже
Выводится список уникальных значений на основании 2 столбцов (name, age) с максимальной датой рождения.
Сейчас вариант 2 работает быстрей.
Как можно оптимизировать вариант чтобы осталось partition ?

1 вариант
create table #tbl1 
(name nvarchar(20),
 age int,
 datebirth datetime)
 
 insert #tbl1 select 'petr', 22, '11/11/2012'
 insert #tbl1 select 'petr', 22, '11/11/2010'
 insert #tbl1 select 'petr', 22, '11/11/2011';
 

 
 with CTE(N)  AS
 (SELECT row_number() over (partition by name, age order by datebirth desc) from #tbl1  )
 
 select * from CTE where N = 1
 
 drop table #tbl1
 



2 вариант

create table #tbl1 
(name nvarchar(20),
 age int,
 datebirth datetime)
 
 insert #tbl1 select 'petr', 22, '11/11/2012'
 insert #tbl1 select 'petr', 22, '11/11/2010'
 insert #tbl1 select 'petr', 22, '11/11/2011';
 

 
 select * from #tbl1 t1 
 where not exists(select * from #tbl1 as t2 
                  where t1.name = t2.name and
                        t1.age = t2.age and
                        t1.datebirth < t2.datebirth)
                        
 drop table #tbl1
24 сен 12, 18:34    [13214687]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
relief
Есть 2 запроса делающих одно и тоже

Это не так.
Во-первых, у вас там разный список полей, во-вторых, вернуться разные результаты для одинаковых строк, в-третьих непонятно, вы хотите использовать partition by, ради partition by?
24 сен 12, 18:53    [13214769]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение запросов  [new]
Добрый Э - Эх
Guest
relief, задача - классика. Её решений - вагон и маленькая тележка. Попробуй все. Возможно, найдешь ещё более оптимальный вариант...
25 сен 12, 06:56    [13216391]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить