Индексирование в Couchbase - первичный индекс используется вместо вторичного индекса - PullRequest
1 голос
/ 23 января 2020

Я довольно часто выполняю этот запрос в couchbase

SELECT * FROM dev_hostel  where data.type = 'Guesthouse'and data.id = '12'

, поэтому я создал этот индекс

CREATE INDEX `type-id-index` ON `dev_hostel`(`data.type`,`data.id`)

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

{
  "plan": {
    "#operator": "Sequence",
    "~children": [
      {
        "#operator": "PrimaryScan3",
        "index": "#primary",

1 Ответ

0 голосов
/ 23 января 2020

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

CREATE INDEX `type-id-index` ON `dev_hostel`(data.type,data.id);

FYI: _host is object and kind is field(nested) in object. 
You reference as _host.kind or `_host`.`kind`. If you do `_host.kind` it looking field "_host.kind" not sub object. 
If you want reference s1 you must use `f1.f2`.s1 because there is dot in the field you must do `f1.f2`.s1


{
  "_host": {
    "kind": "KIND1",
    "id": "ID1"
     },
  "f1.f2": { "s1": 10}
}

Исследуйте советник по индексам https://index-advisor.couchbase.com/

...