[CLickhouse] 学习小计

1.建表

正常按照如下语句进行建表,但会报错说缺少ORDER BY 或 PRIMARY KEY

sql 复制代码
CREATE TABLE omds.a
(
    `x` String COMMENT '',
    `y` String COMMENT '',
    `z` String 
)
ENGINE = MergeTree();

若我们仅需建一个没有主键的表,直接使用如下建表语句即可:

sql 复制代码
CREATE TABLE omds.a
(
    `x` String COMMENT '',
    `y` String COMMENT '',
    `z` String 
)
ENGINE = MergeTree()
ORDER BY tuple()

因为在 ClickHouse 中,ORDER BY tuple() 是用来定义表的主键的。tuple() 函数创建了一个空的元组,这意味着表没有主键,即使用 ORDER BY tuple() 可以避免定义不必要的主键。

在 ClickHouse 中,主键用于优化数据读取,如果表没有主键,那么在执行查询时可能需要全表扫描,这可能会影响查询性能。但有些情况下可能不需要主键,例如,如果我们的表是一个临时表或者数据量非常小。在这些情况下,使用 ORDER BY tuple() 可以避免定义不必要的主键。

若要设置主键,则可以先对主键进行PRIMARY KEY指定,再ORDER BY排序即可:

sql 复制代码
CREATE TABLE omds.b
(
    `x` String COMMENT '',
    `y` String COMMENT '',
    `z` String 
)
ENGINE = MergeTree()
PRIMARY KEY x
ORDER BY x   ;
相关推荐
倔强的石头_9 分钟前
连接池参数治理-HikariCP怎么配才稳
数据库
wWYy.10 分钟前
Mysql:二级索引
数据库·mysql
jnrjian28 分钟前
PG 导出表为excel iconv 乱码
数据库·postgresql
DLYSB_1 小时前
数据库连接池爆满导致全线宕机:我用 Go 写了个“现场声光报警器”,比钉钉快了 10 倍
数据库·golang·钉钉·报警灯
ClickHouseDB1 小时前
Postgres正则表达式性能优化:pg_re2扩展的引入与应用
数据库
艾莉丝努力练剑1 小时前
【MYSQL】MYSQL学习的一大重点:视图
android·服务器·数据库·学习·mysql·面试·视图
三江番长 陀舍古帝1 小时前
细说SQL Server中的加密
运维·服务器·数据库
艾莉丝努力练剑1 小时前
【MYSQL】MYSQL学习的一大重点:事务(下)- InnoDB 事务隔离性原理(MVCC 视角)
android·数据库·b树·sql·学习·mysql·面试
小园子的小菜2 小时前
Redis 核心原理深度解析:从数据结构、IO 模型到持久化机制
数据库·redis·缓存
YUS云生2 小时前
大模型学习·第44天:Chroma向量数据库与RAG链式组装
数据库·学习