Couchbase N1ql запросов - PullRequest
       10

Couchbase N1ql запросов

0 голосов
/ 06 декабря 2018

У меня два вопроса относительно запроса N1QL в Couchbase.

1: Предположим, у меня есть пользовательская таблица, где ID пользователя - это ключ документа, а затем я запускаю запрос, подобный этому

select * from mybucket use keys ["1234 "];

2: Предположим, что userid не является ключом документа, а затем я создаю вторичный индекс для идентификатора пользователя

select * from mybucket, где userid = 1234;

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

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

Предположим, у меня есть пользовательская таблица, где ID пользователя - это ключ документа

выберите * в mybucket, где meta (). Id = "1234";

Этот запрос не выполняется и выдает «Индекс недоступен в пространстве ключей».Это ключ документа, он должен работать как «использовать ключи».Я попытался создать вторичный индекс для идентификатора пользователя, но он говорит, что индекс не может быть создан, так как это поле не является частью документа (очевидно, это ключ документа)

1 Ответ

0 голосов
/ 06 декабря 2018

Первый запрос будет выполнен быстрее всего.Именование конкретного ключа непосредственно в предложении USE KEYS позволяет Couchbase извлекать запись непосредственно в одном запросе.Второй подход, использующий индекс, будет немного медленнее, потому что система сначала должна будет сделать запрос индекса, чтобы получить идентификатор документа, а затем извлечь саму запись.Второй подход все еще будет очень-очень быстрым, но не таким быстрым, как первый.

Да, в зависимости от используемой версии, мы не можем полностью оптимизировать этот третий случай.Используйте клавиши, если можете.

...