Vertica中的表是否有主键和辅助键
Do tables in Vertica has primary and secondary keys
vertica中的投影有主键、副键吗?我怎样才能找出投影的关键是什么?
你最好看看 Vertica 的投影文档:
存在主键和外键,以及唯一约束 - 作为约束;但这些约束通常被禁用 - 因为它们会大大减慢加载/插入过程。
即使您选择不指定投影的分段和排序子句:每个投影要么未分段,要么由一个值分段,该值取决于一个或多个不可空列的内容(通常是 HASH()一列或多列),并按一列或多列排序。投影定义中的 ORDER BY 子句构成了该投影中使用的数据访问路径。它可以在某种程度上与经典数据库中的索引进行比较。
要找出投影的访问路径是什么 - 最快的方法是向它发射 SELECT EXPORT_OBJECTS('','<tablename>', FALSE)
。在我们之前使用的示例中,您会看到它按所有四列排序,并按其所有四列的 HASH() 分段,因为我们创建了没有主键或外键的 table:
$ 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;
vertica中的投影有主键、副键吗?我怎样才能找出投影的关键是什么?
你最好看看 Vertica 的投影文档:
存在主键和外键,以及唯一约束 - 作为约束;但这些约束通常被禁用 - 因为它们会大大减慢加载/插入过程。
即使您选择不指定投影的分段和排序子句:每个投影要么未分段,要么由一个值分段,该值取决于一个或多个不可空列的内容(通常是 HASH()一列或多列),并按一列或多列排序。投影定义中的 ORDER BY 子句构成了该投影中使用的数据访问路径。它可以在某种程度上与经典数据库中的索引进行比较。
要找出投影的访问路径是什么 - 最快的方法是向它发射 SELECT EXPORT_OBJECTS('','<tablename>', FALSE)
。在我们之前使用的示例中,您会看到它按所有四列排序,并按其所有四列的 HASH() 分段,因为我们创建了没有主键或外键的 table:
$ 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;