【发布时间】:2021-01-13 13:10:35
【问题描述】:
vertica 中的投影是否有主键和辅助键?如何找出投影的关键是什么?
【问题讨论】:
标签: vertica
vertica 中的投影是否有主键和辅助键?如何找出投影的关键是什么?
【问题讨论】:
标签: vertica
您最好进入 Vertica 的预测文档:
存在主键和外键,唯一约束也存在 - 作为约束;但这些约束通常被禁用 - 因为它们大大减慢了加载/插入过程。
即使您选择不指定投影的分段和排序子句:每个投影要么未分段,要么按一个取决于一个或多个不可为空列的内容的值分段(通常是一个或多个上的 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;
【讨论】: