[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   ;
相关推荐
倒流时光三十年2 分钟前
PostgreSQL 部分索引(Partial Index)详解
数据库·postgresql·partial index·部分索引
代码中介商26 分钟前
MySQL 存储过程与触发器完全指南
数据库·mysql
Yupureki28 分钟前
《MySQL数据库基础》9.索引原理
linux·运维·服务器·网络·数据库·mysql
睡不醒男孩03082333 分钟前
StarRocks导入数据:从本地文件导入数据(Stream Load)
linux·数据库
treesforest1 小时前
机房IP是什么?有什么危害?如何识别?
网络·数据库·python·网络协议·tcp/ip·网络安全
李少兄1 小时前
MySQL分页重复问题深度剖析
android·数据库·mysql
anew___1 小时前
《数据库原理》第一章——从零理解数据库系统
数据库
Yupureki1 小时前
《MySQL数据库基础》8.复合查询
linux·运维·服务器·网络·数据库·mysql
方芯半导体1 小时前
ST系列MCU EtherCAT协议栈框架结构详解
服务器·网络·数据库·网络协议·机器人·自动化·工业以太网
许彰午2 小时前
开发转兼职DBA(五):从救火到防火——参数、内存、监控、备份
数据库·dba