2016-11-15 2 views
0

Для VoltDB, создавая таблицу, я использую первичный ключ для предотвращения нарушения содержимого. Это автоматически создает индекс первичного ключа, который является деревом баланса. Я также создаю индекс Hash для таблиц, и я хочу использовать индекс хэша и не использовать индекс первичного ключа. Есть ли какой-либо параметр, который я могу использовать для использования индекса Hash во время выполнения запросов.Как предотвратить индексирование первичного ключа по умолчанию, не используется в VoltDB?

ответ

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 
); 
Смежные вопросы