19.MySQL优化DISTINCT Optimization

介绍

DISTINCT与ORDER BY的结合在很多情况下需要临时表。

在很多例子中,一个DISTINCT语句与一个GROUP BY语句是等价的。例如,以下俩个查询就是等价的:

	SELECT DISTINCT c1, c2, c3 FROM t1
	WHERE c1 > const;
	
	SELECT c1, c2, c3 FROM t1
	WHERE c1 > const GROUP BY c1, c2, c3;

由于这种等价性,所以所有的GROUP BY查询的优化也适用于DISTINCT的优化。

当DISTINCT与LIMIT row_count结合使用时,MySQL会在查找到row_count时立刻终止查询。

如果不需要使用到查询中所有表的所有列,MySQL会在找到第一个匹配项后立即停止扫描所有未使用的表。在下面的例子中,假设假设T1在T2之前使用,当它在t2中找到第一行时,MySQL停止从t2读取(对于t1中的任何特定行):

	SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值