省流
首先,给出一个大致的结论(完整解释请继续阅读):
- 有索引时,
GROUP BY和DISTINCT的效率几乎相同,都可以利用索引优化。 - 没有索引时,
DISTINCT的效率通常更高。原因在于GROUP BY会进行排序,可能会触发filesort,导致 SQL 执行变慢。
那么,接下来的问题是:
大约 4 分钟
首先,给出一个大致的结论(完整解释请继续阅读):
GROUP BY 和 DISTINCT 的效率几乎相同,都可以利用索引优化。DISTINCT 的效率通常更高。原因在于 GROUP BY 会进行排序,可能会触发 filesort,导致 SQL 执行变慢。那么,接下来的问题是:
说到 SQL 查询语句,几乎所有开发者都对 SELECT * 不陌生。在早期学习 SQL
或快速开发原型时,我们可能经常用它来偷懒,因为它看起来既简单又直接:想要啥,全都给。但随着项目的深入和数据库的复杂化,你会发现这个看似万能的工具,其实问题也不少。
今天我们就来聊聊,为什么在许多开发手册中,明确建议避免使用 SELECT *,以及它为什么仍然在一些场景中大放异彩。
SELECT *