• [CLickhouse] 学习小计


    1.建表

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

    1. CREATE TABLE omds.a
    2. (
    3. `x` String COMMENT '',
    4. `y` String COMMENT '',
    5. `z` String
    6. )
    7. ENGINE = MergeTree();

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

    1. CREATE TABLE omds.a
    2. (
    3. `x` String COMMENT '',
    4. `y` String COMMENT '',
    5. `z` String
    6. )
    7. ENGINE = MergeTree()
    8. ORDER BY tuple()

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

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

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

    1. CREATE TABLE omds.b
    2. (
    3. `x` String COMMENT '',
    4. `y` String COMMENT '',
    5. `z` String
    6. )
    7. ENGINE = MergeTree()
    8. PRIMARY KEY x
    9. ORDER BY x ;

  • 相关阅读:
    mysql笔记:10. 日志
    pikachu ssrf
    使用git实战上传项目
    LVGL---标签(lv_label)
    (十) 共享模型之内存【有序性】
    从Linux的tty_struct指针获取驱动上下文
    Nginx七层的负载均衡使用keepalived实现高可用
    移动应用数据安全管理要求(一)
    day36-xml
    package.json,package-lock.json,yarn.lock
  • 原文地址:https://blog.csdn.net/weixin_46485607/article/details/134547277