在 ClickHouse 中重写 PostgreSQL 查询
这是关于从 PostgreSQL 迁移到 ClickHouse 指南的 第 4 部分。该内容可以视为入门指南,旨在帮助用户部署一个初步功能性系统,遵循 ClickHouse 的最佳实践。它避免了复杂的主题,不能产生完全优化的模式;而是为用户构建生产系统并以此为基础进行学习提供了一个坚实的基础。
以下提供了比较 PostgreSQL 和 ClickHouse 的示例查询。此列表旨在演示如何利用 ClickHouse 的功能显著简化查询。这些查询在大多数情况下在 ClickHouse 中执行也更快。这里的示例使用了完整的 Stack Overflow 数据集(截至 2024 年 4 月)在 PostgreSQL 和 ClickHouse 中的等效资源(8 核心,32GiB RAM)。
此处的计数可能略有不同,因为 Postgres 数据仅包含满足外键引用完整性的行。ClickHouse 不强加此类约束,从而具有完整的数据集,例如包含匿名用户。
用户(提问超过 10 个)收到最多查看数:
哪些 tags
接受的 views
最多:
聚合函数
用户应在哪儿可能利用 ClickHouse 聚合函数。下面我们展示了使用 argMax 函数计算每年的最受欢迎问题。
这比等效的 Postgres 查询简单得多(且更快):
条件和数组
条件和数组函数使查询显著简化。以下查询计算了 2022 年到 2023 年标签(超过 10000 次出现)的最大百分比增长。请注意,以下 ClickHouse 查询得益于条件、数组函数和在 HAVING 和 SELECT 子句中重用别名而显得简洁。
这总结了我们对于从 Postgres 迁移到 ClickHouse 的基本指南。我们建议从 Postgres 迁移的用户阅读 ClickHouse 数据建模指南,以了解更多关于 ClickHouse 的高级功能。