【发布时间】:2018-10-14 19:42:22
【问题描述】:
我有一个表,其中包含我想要的 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 万条记录,我想担心这个
将为此优化什么查询?
【问题讨论】:
-
您的代码不是有效的 MySQL。你真正使用的是什么数据库?
-
@Gordon Linoff,使用 MSSQL 但将代码迁移到 MySQL
标签: mysql sql greatest-n-per-group query-performance sqlperformance