后端如何选择去重方案?

新手上路,请多包涵

后端如何选择去重方案?

1.distinct
2.group by
3.代码去重

阅读 1.7k
2 个回答

去重看你要开发速度还是响应速度
如果是查询 mysql读取到磁盘的时间是多少 (根据我的经验 , 通过row行数来分析是较为准确的),
group by是否有分组优化 , 如果没有会建立临时表吗 ,
最后到代码这边 , 是不是要走网络 , 现在的网速很慢 , cpu和磁盘通过usb连接都会超级影响速度, 更何况是通过更慢的网络 , 到代码中 , 如果你部署在不同的电脑上
mysql的速度是靠不读取数据到内存 , 只通过索引 , 来快速查询 .
总结 sql中去重是最快的 .

DISTINCT

  • 优点: 语法简单,适用于从查询结果中去除重复行。适合简单的去重需求。
  • 缺点: 对于大数据集,性能可能不如 GROUP BY,因为需要扫描整个数据集。
  • 适用场景: 当只需要简单去重且不涉及复杂的聚合操作时。

GROUP BY

  • 优点: 可以结合聚合函数(如 COUNT, SUM, AVG 等)使用,提供更灵活的数据处理能力。对于大数据集,性能通常优于 DISTINCT,尤其是当有索引时。
  • 缺点: 语法相对复杂,需要明确指定分组列。
  • 适用场景: 需要对数据进行分组统计或复杂数据处理时。

代码去重

  • 优点: 灵活性最高,可以根据具体业务逻辑进行定制化处理。
  • 缺点: 需要额外的编程工作,可能增加代码复杂度和维护成本。
  • 适用场景: 当数据库去重无法满足需求或需要结合业务逻辑进行复杂去重时。

综合来看:

  • 简单去重: DISTINCT 是一个快速且易于理解的选择。
  • 复杂数据处理和聚合分析: GROUP BY 提供了更高的灵活性和性能优势。
  • 高度定制化场景: 代码去重是最佳选择。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题