【问题标题】:Do tables in Vertica has primary and secondary keysVertica 中的表是否有主键和辅助键
【发布时间】:2021-01-13 13:10:35
【问题描述】:

vertica 中的投影是否有主键和辅助键?如何找出投影的关键是什么?

【问题讨论】:

    标签: vertica


    【解决方案1】:

    您最好进入 Vertica 的预测文档:

    https://www.vertica.com/docs/10.0.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CREATEPROJECTION.htm

    存在主键和外键,唯一约束也存在 - 作为约束;但这些约束通常被禁用 - 因为它们大大减慢了加载/插入过程。

    即使您选择不指定投影的分段和排序子句:每个投影要么未分段,要么按一个取决于一个或多个不可为空列的内容的值分段(通常是一个或多个上的 HASH()更多列),并按一列或多列排序。投影定义中的 ORDER BY 子句构成该投影中使用的数据访问路径。它可以在某种程度上与经典数​​据库中的索引进行比较。

    要找出投影的访问路径是什么——最快的方法是向它发射SELECT EXPORT_OBJECTS('','<tablename>', FALSE)。在我们之前使用的示例中,您会看到它按所有四列排序,并按所有四列的 HASH() 分段,因为我们创建的表没有主键或外键:

    $ vsql -Atc "SELECT EXPORT_OBJECTS('','example',FALSE)"
    
    
    CREATE TABLE dbadmin.example
    (
        fname varchar(4),
        lname varchar(5),
        hdate date,
        salary numeric(7,2)
    );
    
    
    CREATE PROJECTION dbadmin.example_super /*+basename(example),createtype(L)*/ 
    (
     fname,
     lname,
     hdate,
     salary
    )
    AS
     SELECT example.fname,
            example.lname,
            example.hdate,
            example.salary
     FROM dbadmin.example
     ORDER BY example.fname,
              example.lname,
              example.hdate,
              example.salary
    SEGMENTED BY hash(example.fname, example.lname, example.hdate, example.salary) ALL NODES OFFSET 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2016-04-23
      • 1970-01-01
      相关资源
      最近更新 更多