----请教一个问题,各位请进----
distinct 与 count的工作原理
请教一下,distinct 与 count的工作原理是什么
有没别的语句比distinct 的效率高,但能达到同样的效果?
有没别的语句比count的效率高,但能达到同样的效果?
------解决方案--------------------distinct 可以用group by 代替 。
count 如果是查询表的条数的话,可以直接从系统表中得到。
------解决方案--------------------http://topic.csdn.net/u/20120330/19/d10739cd-5e4c-4689-b6ae-38fe4dbb5751.html?18151
这个里面讨论的就是这个问题。
------解决方案--------------------
------解决方案--------------------啥叫工作原理?
distinct 去重,去重肯定要排序吧,至于排序你懂得,有很多算法的。。。
count distinct 都会用到索引,有没有索引直接影响到你的速度。
这些往往要伴随着一些条件执行,而这些条件也起到很大的影响作用 例如
select count(*) from tb where id>1000 --id 列有聚集索引
select count(*) from tb
前者的开销要远远小于后者,速度也快,因为前面是index seek 后面就是index scan。
------解决方案--------------------distinct 无法用其它方法来取代的
和group by 是没有什么区别的
count 如果是cout整个表,可以从系统表里面读取,整个肯定快很多。
SQL code
select rowcnt from sys.sysindexes where id= object_id('ItemCategory') and indid<=1 and OBJECTPROPERTY(id,'IsTable')=1
------解决方案--------------------
原理是什么意思?
distinct 去重复来的。和分组group by意思一样
count是你查询结果的条数。
------解决方案--------------------
例如,distinct是按照asc II码进行排序的,排序之后是如何去掉重复的呢?
count 不是遍历全表的时候,就没更加高效的方法吗?
这两个东东经常用到,但是比较占资源,为了节省资源,常常不得不在前台做大量的工作来弥补。