首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

SQL去重是用DISTINCT好,还是GROUP BY好?

我们知道DISTINCT可以去掉重复数据,GROUP BY在分组后也会去掉重复数据,那这两个关键字在去掉重复数据时的效率,究竟谁会更高一点?...2.GROUP BY与DISTINCT去掉重复数据的对比 GROUP BY与DISTINCT类似,经常会有一些针对这两个哪个效率高的争议,今天我们就将这两个在不同重复数据量的效率作下对比。...FROM sales.Temp_Salesorder GROUP BY UnitPrice; 将上述两条语句一起执行,结果如下: ?...可以看出两条语句对应的执行时间GROUP BY比DISTINCT效率高一点点。...作者对上述语句同时执行多次,针对重复量多的UnitPrice,GROUP BY总的处理效率比DISTINCT高一点点,但是针对重复量低的SalesOrderDetailID,DISTINCT就比GROUP

2.9K20

面试官:MySQL 中的 distinctgroup by 哪个效率更高?

先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。...大致解释一下: GROUP BY 默认隐式排序(指在 GROUP BY 列没有 ASC DESC 指示符的情况下也会进行排序)。...然而,GROUP BY进行显式隐式排序已经过时(deprecated)了,要生成给定的排序顺序,请提供 ORDER BY 子句。...因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。 在语义相同,无索引的情况下: distinct效率高于group by。...且由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,通过聚合函数对数据进行运算

39410

MySQL中的GROUP BY和DISTINCT:去重的效果与用法解析

本文将详细解析MySQL中的GROUP BY和DISTINCT的用法,并比较它们对同一字段的去重效果是否相同。...一、GROUP BY的用法及效果GROUP BY关键字用于将结果集按照一个多个列进行分组,并对每个组应用聚合函数。...三、GROUP BY和DISTINCT对同一字段的去重效果比较尽管GROUP BY和DISTINCT都可以用于去重,但它们的用法和效果是不同的。...GroupDistinct的效果对比现在我们来对比一下GroupDistinct对同一字段去重的效果。我们将使用一个示例数据集来进行演示。...Distinct关键字用于去除结果集中重复的字段值,适用于单个字段的去重操作。在对同一字段进行去重时,Group By和Distinct的效果是相同的。Group By还可以用于多个字段的分组操作。

1.9K50

京东一面:MySQL 中的 distinctgroup by 哪个效率更高?太刁钻了吧!

先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。...大致解释一下: GROUP BY 默认隐式排序(指在 GROUP BY 列没有 ASC DESC 指示符的情况下也会进行排序)。...然而,GROUP BY进行显式隐式排序已经过时(deprecated)了,要生成给定的排序顺序,请提供 ORDER BY 子句。...因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。 在语义相同,无索引的情况下: distinct效率高于group by。...且由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,通过聚合函数对数据进行运算

2K30

《面试季》高频面试题-Group by的进阶用法

3、如何实现数据去重   答: 在SQL中可以通过关键字distinct去重,也可以通过group by分组实现去重,但实际上,如果数据量很大的话,使用distinct去重的效率会很慢,使用Group...(测试数据300w+,使用distinct去重需要十几秒,使用group by去重只需要几秒)。...一: Rollup、Cube、Grouping sets的介绍: 作用:   都是用于进行分组集合计算,不支持聚合函数中的DISTINCTGROUP BY ALL子句,GROUP BY字句,ROLLUP...在GROUPING函数中的expr必须匹配一个GROUP BY子句中的表达式, 该函数的返回值0大于0。...考虑到可能很多人感觉官方文档都是英文为主,不太适合阅读,在此处推荐一个关于PostGresql的中文网站,大家感兴趣的话可以去了解,地址: http://www.postgres.cn/v2/document

1.6K20

以卖香蕉为例,从4个方面了解SQL的数据汇总

01 基础汇总 我们可以通过一段很短的SQL命令实现如计算个数(count)、去重(distinct)、求和(sum)、求平均(average)、求方差(variance)等汇总需求。...假设我们有一个关于香蕉交易的数据表格,需要计算每天的顾客总数(num_customers)、去重顾客数(distinct_customers)、香蕉销量(total_bananas)、总收入(total_revenue...如果再加上wherejoin命令,我们还可以高效地对数据进行切分。当然,有些需求并不能完全由一般的SQL函数实现。 ?...如果我们想要增加更多分组维度(如具体时间段),只需要将它们添加到partition和group by子句中。对于不支持percentile_cont的数据库,命令会更复杂一些,但仍然可以实现。...大多数SQL实现已经内建了这些统计函数,比如在PostgresRedshift中我们可以使用以下命令: ? Postgres中内建了诸多汇总函数,甚至包括线性回归。

1.2K30

POSTGRESQL 数据库结构体系 ||| 东来西去 三个角度看

进程作为前端来对客户进行服务,所有POSTGRES 从进程的角度来看是服务器承接 客户前端服务的,后端服务 postgres: postgres postgres [local] idle 通过上面的图中的信息...: logger postgres: checkpointer postgres: background writer postgres: walwriter postgres:...archiver postgres: stats collector postgres: logical replication launcher postgres: autovacuum...local memory 包含了 work men , maintenance_work_men 和 temp_buffers 其中每个项目牵扯一部分的性能 work mem 牵扯了order by distinct...group by merge join , hash join ,bitmap join 等操作中使用的内存,较大的work_mem 可以提高一些复杂的SQL 的查询速度,但内存的消耗也会变高 maintenance_work_mem

53220

进阶数据库系列(二十五):PostgreSQL 数据库日常运维管理

加入到dataload组 alter group dataload add user copyload; --将finebi加入到interface用户组 alter group interface add...例如流式数据,时间字段自增字段,可以使用BRIN索引,减少索引的大小,加快数据插入速度。...col) 计算该列的非NULL不重复数量,NULL不被计数; count(distinct (col1,col2,…) ) 计算多列的唯一值时,NULL会被计数,同时NULL与NULL会被认为是想同的...支持DDL事务,支持回滚DDL,建议将DDL封装在事务中执行,必要时可以回滚,但是需要注意事务的长度,避免长时间堵塞DDL对象的读操作; 如果用户需要在插入数据和,删除数据前,或者修改数据后马上拿到插入被删除修改后的数据...禁止使用触发器产生序列值; 使用窗口查询减少数据库和应用的交互次数; 如何判断两个值是不是不一样(并且将NULL视为一样的值),使用col1 IS DISTINCT FROM col2; 对于经常变更,

71920
领券