如何防止默认主键索引是在VoltDB中使用?

时间:2016-11-15 06:06:51

标签: indexing voltdb

对于VoltDB,在创建表时,我使用主键来防止内容违规。这会自动创建主键索引,这是一个平衡树。我还为表创建了哈希索引,我想使用哈希索引而不是使用主键索引。在执行查询时,我是否可以设置使用哈希索引。

1 个答案:

答案 0 :(得分:1)

VoltDB使用约定来确定是使用红黑树索引还是哈希索引。惯例是在索引名称中包含子串“hash”(不区分大小写)。它可以是前缀,后缀或名称中间的某个位置。

根据我的经验,由于索引完全在内存中,因此树和哈希索引之间的性能差异非常小。可能值得尝试两种方式,并比较性能与空间使用情况,以确定哪种方式最佳。

此外,还有一些语法样式可用于声明表的主键。您不必为其命名,但您可以,这将允许您声明是否要将其作为树或哈希索引。不应该仅仅因为主键索引不是您想要的而创建重复索引。以下是两个例子:

CREATE TABLE Version (
    Major SMALLINT NOT NULL,
    Minor SMALLINT NOT NULL,
    baselevel INTEGER NOT NULL,
    ReleaseDate TIMESTAMP,
    CONSTRAINT Version_Hash_Idx PRIMARY KEY 
        (Major, Minor, Baselevel)  -- hash index
);

CREATE TABLE Version (
    Major SMALLINT NOT NULL,
    Minor SMALLINT NOT NULL,
    baselevel INTEGER NOT NULL,
    ReleaseDate TIMESTAMP,
    PRIMARY KEY (Major, Minor, Baselevel)  -- default tree index
);