у меня есть таблица, содержащая столбцы id, primaryid, data, dataname, которые я хочу
только строки, для которых есть максимальный идентификатор и primaryid
create table #temp
(
id int,
primaryid int,
data nvarchar(20),
data_name nvarchar(30)
)
insert into #temp
values (1,1,'3223sfd','434'),(1,2,'sdfsd','dfsdfsd'),
(1,3,'sdfs897d','898'),(1,4,'898','545'),(1,5,'898','uuyu'),
(2,1,'3223sfd','434'),(2,2,'sdfsd','dfsdfsd'),
(2,3,'sdfs897d','898'),(2,4,'898','545'),(2,5,'898','uuyu')
Я достигаю этого с помощью запроса ниже
select T.id , T.primaryid , T.data , T.data_name from #temp T , (select ID, max(primaryid) rank from #temp t2 group by id ) as T2
where t.primaryid = t2.rank group by T.id , T.primaryid , T.data , T.data_name
но в моей таблице более 100 тыс. Записей, я хочу об этом беспокоиться
Какой будет оптимизированный запрос для этого?