Couchbase Вторичный индекс на фильтре - PullRequest
0 голосов
/ 10 января 2019

Я работаю с Couchbase 6.0. Я знаю, что мы можем создать вторичный индекс для фильтра.

Итак, я создал индекс как

CREATE INDEX idx_zipcode
       ON userbucket(zipcode)
       WHERE status = "active";

У меня есть вопрос здесь:

Могу ли я создать индекс для предложения фильтра, если поле является динамическим.

как то так

CREATE INDEX idx_zipcode
       ON userbucket(zipcode)
       WHERE status = ? ;

Второй вопрос,

Какой из них лучше с точки зрения производительности:

Single index on 2 fields

CREATE INDEX idx_1 ON userbucket('fname','lname')

или

Отдельный указатель на каждое поле

CREATE INDEX idx_1 ON userbucket('fname')
CREATE INDEX idx_2 ON userbucket('lname')

1 Ответ

0 голосов
/ 10 января 2019

Нет, мы не можем создать индекс с указанным динамическим предложением, принимающим переменную связывания.

Однако, когда вы уверены, что статус и почтовый индекс являются частью предикатов и имеют динамический характер, индекс, как показано ниже, будет полезен.

CREATE INDEX idx_zipcode_status  ON userbucket(zipcode, status);

См. Блог создания индекса Couchbase - правильная производительность .

В отношении второго запроса применяется тот же принцип, что и

Выбор индекса для запроса зависит исключительно от фильтров в WHERE пункт вашего запроса

Вторичный составной индекс также подходит, если в вашем запросе есть оба или ведущие столбцы.

CREATE INDEX idx_1 ON userbucket('fname','lname')

Указанный выше индекс будет использоваться такими запросами, как:

SELECT * FROM userbucket WHERE fname= 'fnam' AND lname= 'lnam';
...