当前位置: 代码迷 >> Sql Server >> 怎么优化 “select distinct, min(xxx) from 一张表”
  详细解决方案

怎么优化 “select distinct, min(xxx) from 一张表”

热度:276   发布时间:2016-04-27 14:39:52.0
如何优化 “select distinct, min(xxx) from 一张表”

数据量很大时候 下面这句话的查询效率很低(类别 和 tstId 都已建立索引)
select distinct 类别,min(tstId) id from 表 group by 类别;

如果优化这条语句呢? 我在想是否可以写成 inner join 然后select xxx from 表 a innerjoin 表 b 然后在找出来?

------解决方案--------------------
SQL code
select * from 表 a where not exists(select 1 from 表 where 类别=a.类别 and tstId<a.tstId)
------解决方案--------------------
SQL code
select * from 表 t where tstId=(select min(tstId) from 表 where 类别=t.类别)
------解决方案--------------------
既然是查询最大tstId 这个没重复吧? 应该不需要distinct咯

SQL code
select 类别,min(tstId) id from 表 group by 类别;
------解决方案--------------------
SQL code
select * from tb a where not exists(select 1 from tb where 类别=a.类别 and tstid<a.tstid)
  相关解决方案