【求解】distinct与group by效率求解

仙道彰 2010-03-31 01:35:51
当语句中没有使用聚合函数的时候使用distinct与group by都能达到去除重复的效果
例:
--1
select distinct col from tb
--2
select col from tb group by col

这两种情况那个效率会更好点呢?
效率差别大吗?
如果是多列有区别吗?
 select distinct col,col2,col3,col4........from tb
...全文
4225 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
佛不問蒼生 2012-04-03
  • 打赏
  • 举报
回复
單列選擇還可以,多列選擇就不能用DISTINCT了..得Group By.
lflljt 2012-04-01
  • 打赏
  • 举报
回复
--study
dovei 2011-11-23
  • 打赏
  • 举报
回复
学习
支持#2...弱弱的问声.研究有结果不?
仙道彰 2010-04-01
  • 打赏
  • 举报
回复
huangheguyun 2010-04-01
  • 打赏
  • 举报
回复
select distinct col from tb
这个能快点。
sql_sf 2010-04-01
  • 打赏
  • 举报
回复
我是来学习的
w1368042276 2010-03-31
  • 打赏
  • 举报
回复
group by 是用来分组的,不建议用来去除重复行,
distinct 用来去除重复行,不能分组
黄_瓜 2010-03-31
  • 打赏
  • 举报
回复
帖子不见了
黄_瓜 2010-03-31
  • 打赏
  • 举报
回复
做了一个简单的测试,感觉两者效率很接近,不晓得这个测试能不能说明问题

------------------------------Version------------------------------------------
--Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
------------------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb]([id] int,[date] datetime)
insert [tb] select rand()*10000,getdate()
go 1000000

select distinct id from tb
/*
(10000 行受影响)
SQL Server 执行时间:
CPU 时间 = 780 毫秒,占用时间 = 634 毫秒。
*/
select id from tb group by id
/*
(10000 行受影响)
SQL Server 执行时间:
CPU 时间 = 796 毫秒,占用时间 = 641 毫秒。

*/
--建立聚集索引
create clustered index idtbID ON tb(id)

select distinct id from tb

/*

(10000 行受影响)
SQL Server 执行时间:
CPU 时间 = 172 毫秒,占用时间 = 1495 毫秒。

*/
select id from tb group by id

/*
(10000 行受影响)


SQL Server 执行时间:
CPU 时间 = 172 毫秒,占用时间 = 1489 毫秒。
*/
行者_ 2010-03-31
  • 打赏
  • 举报
回复
看了 楼上的 连接 还是不慎了解
东那个升 2010-03-31
  • 打赏
  • 举报
回复
个人觉得如果单是去重效率应该是一样的
htl258_Tony 2010-03-31
  • 打赏
  • 举报
回复
永生天地 2010-03-31
  • 打赏
  • 举报
回复
从执行计划上看是一样的
SoftwKLC 2010-03-31
  • 打赏
  • 举报
回复

来听课的!
--小F-- 2010-03-31
  • 打赏
  • 举报
回复
没发言权

回去研究下 我始终认为是group by的效率高

对于distinct需要慎用

研究结果 回去再贴上
guguda2008 2010-03-31
  • 打赏
  • 举报
回复
帮顶,学习

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧