文章目录
1、用GROUP BY替换DISTINCT去重
- 在极大的数据量且有很多重复值时,可以先 GROUP BY 去重,再使用 COUNT()计数,效率要高于 COUNT(DISTINCT)
- 去重字段的重复值时,使用 GROUP BY 效率也会比 DISTINCT 高
SElECT user_name
FROM trade
GROUP BY user_name;
2、使用MAPJOIN
- HSQL中涉及到多张表的JOIN,当有一张表的大小小于1G时,使用MAPJOIN可以明显的提高SQL的效率。
- 不过需要注意的是,如果最小的表大于1G,使用MAPJOIN会出现OOM的错误。
SElECT /*+ MAPJOIN(table_a)*/,
a.*,
b.*
FROM table_a a
JOIN table_b b
ON a.id = b.id
3、使用DISTINCT+ UNION ALL代替UNION
- 如果遇到要使用UNION 去重的场景,使用DISTINCT+ UNION ALL比使用UNION 的效果好。
SElECT COUNT