CK的SQL脚本优化

本文详细探讨了如何对ClickHouse的SQL脚本进行优化和调优,涵盖了索引利用、查询结构调整、并行查询优化等多个方面,旨在提升数据库查询效率和性能。
摘要由CSDN通过智能技术生成
CK数据读取底层逻辑(如下图所示)
1. 第一阶段,通过隐含的 granule 单位读取主键索引 idx 文件
2. 通过二分搜索过滤不需要的 granule,再关联对应的 mk2 文件,映射 Granule 和数据文件的 offset
3. 进入第二阶段,并发解压、读取 bin 数据文件,进一步排除数据,完成读取



# 开启查询执行详细日志
# /etc/clickhouse-server/config.xml
<logger>
    <!-- 等级需为 trace -->
    <level>trace</level>
    <log>/var/log/clickhouse-server/clickhouse-server.log</log>
    <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
    <size>1000M</size>
    <count>10</count>
</logger>
# 函数
1. USING 代替 on

2. prewhere 替代 where

3. uniqCombined 替代 distinct

4. 用 IN 代替 JOIN (较少场景适用)

5. count() 代替 count(*)



# 原则
1. 多表 join 时要满足小表在右的原则

2. 两张分布式表上的 IN 和 JOIN 之前必须加上 GLOBAL 关键字

3. 如果复合主键中的键列在基数上有很大差异,那么查询时将主键列按基数升序排列是有好处的
     (性别基数是2)

4. 对于高基数列,主键排序顺序对于未命中主键的搜索性能的影响不大,接近全表扫描


# 方案
1. 当查询条件属于复合键(id,name)但不是第一个键列的列字段(name)&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值