`
足至迹留
  • 浏览: 495697 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论
阅读更多
1. distinct简介
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。

distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

2.使用限制
1)distinct必须放在select后的第一个字段前
2)distinct的作用范围是select后的所有的字段,而不仅仅是紧挨着的字段。就像联合主键一样,共同保证唯一性。
3)distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinct name,以及对应的“备注”字段,但又不想让“备注”和name共同保证distinct是不行的。有上面两点的限制这一点不难理解。但可以通过其他组合查询的方式得到这种结果。

4)可以在函数里使用distinct,比如:
select p.event_source,count(distinct p.DESCRIPTION) from v_process_info p group by p.EVENT_SOURCE

3. 与group by的性能对比
这里只是引用了网上几个对比,自己没有验证。说明一点,就算是验证,结论不一定准确,数据库的架构和数据的分布和数量级都会影响到测试结果。结果仅供参考.
1)在mysql中测试,group by比distinct性能好很多。
2)使用索引,同样的关键字下效率提升几十~上百倍。
http://www.cnblogs.com/zox2011/archive/2012/09/12/2681797.html

在oracle10g之后,group by同样是比distinct性能好。
分析见:http://blog.itpub.net/4227/viewspace-69053/

tom大师也给出oracle下,group by比distinct性能好些。
http://blog.chinaunix.net/uid-22948773-id-3157019.html

其他参考:
http://www.jb51.net/article/24717.htm
http://www.itpub.net/thread-611402-1-1.html
0
0
分享到:
评论

相关推荐

    分析MySQL中优化distinct的技巧

    在MySQL数据库中,优化`DISTINCT`操作是一个关键的性能提升策略,特别是在处理大量数据时。上述场景中,用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一...

    MySQL中索引优化distinct语句及distinct的多字段操作

    MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用.本文涉及一个...

    MongoDB教程之聚合(count、distinct和group)

    在本教程中,我们将深入探讨MongoDB中的三个关键聚合操作:`count`、`distinct`和`group`。 1. `count` 函数: `count` 方法用于计算集合中符合特定条件的文档数量。在MongoDB中,你可以直接调用`db.collection....

    EFCore查询不重复数据Distinct.docx

    `Distinct()`方法是C# LINQ中用于去除重复元素的关键操作,而在EFCore中,它可以应用于数据库查询来过滤掉重复记录。 首先,让我们深入理解`Distinct()`方法。在C#中,`Distinct()`方法通过比较元素的默认等价关系...

    mysql中distinct用法【SQL中distinct的用法】.docx

    MySQL 中 DISTINCT 用法详解 MySQL 中的 DISTINCT 关键字用于返回唯一不同的值,避免重复值的出现。当我们在查询表中数据时,可能会遇到重复值的情况,这时使用 DISTINCT 关键字可以帮助我们返回唯一的值。 ...

    使用Distinct查询.rar

    在SQL语言中,`DISTINCT`关键字是一种非常重要的查询方式,它用于消除查询结果中的重复行,从而确保返回的数据是唯一的。本教程将深入探讨如何使用`DISTINCT`查询,以及在不同场景下它的应用。 一、DISTINCT基本...

    oracle rownum和distinct

    "Oracle 中的 ROWNUM 和 DISTINCT" Oracle 中的 ROWNUM 和 DISTINCT 是两个非常重要的关键词,它们在查询数据时发挥着至关重要的作用。然而,许多开发者在使用这两个关键词时,却常常会遇到一些不太理解的地方,...

    distinct的使用.docx

    在SQL语言中,`DISTINCT`关键字是一个非常重要的部分,特别是在数据检索时,它帮助我们去除结果集中的重复行,确保返回的每一行都是唯一的。本文将深入探讨`DISTINCT`在Oracle数据库中的使用,以及如何与其他SQL元素...

    【DISTINCT】优化之MySQL官方文档翻译

    ### DISTINCT优化之MySQL官方文档翻译解析 #### 一、引言 在数据库查询操作中,经常需要使用`DISTINCT`关键字来去除重复记录,确保结果集中的每一条记录都是唯一的。然而,在某些场景下,使用`DISTINCT`可能会导致...

    完美解决distinct中使用多个字段的方法

    完美解决distinct中使用多个字段的方法,完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法

    23.Oracle的distinct关键字1

    Oracle数据库中的`DISTINCT`关键字是一个非常重要的SQL查询语句组成部分,它用于去除查询结果中的重复行,确保返回的每一条记录都是唯一的。在本例中,我们将通过创建一个名为`T_GIRL`的超女基本信息表,并插入一些...

    用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值

    今天,我们将深入探讨如何使用`DISTINCT`关键字在MySQL中查询多条不重复记录值,这不仅是一种实用技能,也是提升数据处理效率的关键所在。 ### `DISTINCT`关键字详解 `DISTINCT`关键字在SQL查询中扮演着一个至关...

    django queryset 去重 .distinct()说明

    我就废话不多说了,大家还是直接看代码吧! contacts = ... return house.distinct() 合并出来的queryset,再去重。 补充知识:Python——深入理解urllib、urllib2及requests(requests不建议使用?)

    Distinct(NetMon)很好用的网络抓包工具

    Distinct(NetMon)是一款在IT领域中广泛应用的网络抓包工具,因其强大的功能和友好的用户界面而备受赞誉。网络抓包,也被称为网络嗅探,是网络分析的基础,它允许技术人员捕获在网络中传输的数据包,以便进行故障...

    select distinct用法

    select distinct用法 在SQL中,SELECT语句中的DISTINCT关键字的用法是一个非常重要的知识点。DISTINCT关键字的主要用途是去除重复记录,只保留唯一的记录。但是,DISTINCT关键字的使用有一些限制和注意事项。 首先...

    用C#实现对DataTable的JOIN,GROUP BY,FILTER,UNIONALL,DISTINCT

    用C#实现对DataTable的JOIN,GROUP BY,FILTER,UNIONALL,DISTINCT

    小度写范文【SQL中distinct的用法】mysql中distinct用法模板.docx

    在SQL查询中,`DISTINCT`关键字是一个非常重要的部分,它允许我们从结果集中去除重复的行或特定列的值。在MySQL中,`DISTINCT`的使用方式和功能与其他SQL数据库系统(如SQL Server、Access等)大体相同,但有一些...

    小度写范文【SQL中distinct的用法】mysql中distinct用法模板.pdf

    在SQL查询中,`DISTINCT`关键字是一个非常重要的部分,它允许我们从查询结果中去除重复的记录,只返回唯一的、不同的值。在MySQL中,`DISTINCT`的使用方式非常灵活,可以从单个列到多个列进行操作,也可以与聚合函数...

    vc 小技巧 mysql distinct 语句

    当我们处理数据时,有时需要从查询结果中去除重复的记录,这时`DISTINCT`关键字就派上了用场。本文将深入探讨MySQL中的`DISTINCT`语句,以及如何在Visual C++(简称VC)开发环境中与MySQL数据库进行交互。 `...

    Birt總和計算運用 distinct_sum (含rptdesign原始檔+資料庫)

    本教程将深入探讨如何在BIRT中利用`distinct_sum`函数实现对数据的总和计算,同时提供了一个包含`distinct_sum.rptdesign`原始文件和`order_data.csv`数据源的实例,以帮助读者更好地理解这一技巧。 首先,让我们...

Global site tag (gtag.js) - Google Analytics