[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   ;
相关推荐
j***49561 分钟前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
0***v7772 分钟前
Redis的优势和特点
数据库·redis·缓存
2***d8852 分钟前
redis服务启动与停止
数据库·redis·缓存
p***95003 分钟前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
居7然7 分钟前
MCP与数据库的完美结合
数据库
m***567211 分钟前
mybatis plus打印sql日志
数据库·sql·mybatis
p***629911 分钟前
mysql--多表查询
数据库·mysql
s***P98215 分钟前
MySQL远程连接错误解决:“Host is not allowed to connect to this MySQL server”详解
数据库·mysql
黄焖鸡能干四碗17 分钟前
软件试运行方案试运行报告文档下载(WORD)
大数据·运维·数据库·安全
big-seal20 分钟前
XML解释
xml·java·数据库