-
不要用select *
反例:
select * from app.user_model
正例:
select login_id,name,sex from app.user_model
理由:
只查询需要的字段可以减少磁盘io和网络io,提升查询性能
-
不要在大结果集上构造虚拟列
反例:
select id ,pv, uv , pv/uv rate from app.scene_model
正例:
select id ,pv, uv from app.scene_model
理由:
虚拟列非常消耗资源浪费性能,拿到pv uv后在前端显示时构造比率。
-
不要在唯一列或大基数列上进行分组或去重操作
反例:
select id, count(1) cn from app.user_model group by id
正例:
select id from app.user_model
理由:
基数太大会消耗过多的io和内存。
-
根据需要查询指定范围的数据 (where)
反例:
sele

本文介绍了提高ClickHouse查询性能的几个关键点,包括避免使用`select *`,不在大结果集上构造虚拟列,避免在高基数列上分组,正确使用`where`子句,优化关联查询顺序,利用`uniqCombined`近似去重,限制返回数据量,避免使用字符串类型,以及指定查询分区等。这些最佳实践能有效减少IO和网络负担,提升查询效率。
最低0.47元/天 解锁文章
1957

被折叠的 条评论
为什么被折叠?



