【求解】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
...全文
4294 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,580

社区成员

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

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