我有一个包含id、primaryid、data、dataname列的表,我只需要包含max id和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
但是我的表有超过10万条记录我想担心这个
将为此优化什么查询?
3条答案
按热度按时间kxkpmulp1#
首先你应该创建
index
在id
以及primaryid
然后使用join,如下所示:p5fdfcr12#
您似乎正在使用sql server。如果是,一种方法是:
lsmd5eda3#
你可以用
subquery
在这里: