Как выбрать сканирование индекса или таблицы при запросе в SequoiaDB? - PullRequest
0 голосов
/ 01 марта 2019

Существуют следующие сценарии:

Используйте PG для выполнения запроса следующим образом:

Select count(*) from t where DATETIME >'2018-07-27 10.12.12.000000' and DATETIME < '2018-07-28 10.12.12.000000' 

Возвращает 22 индекса с быстрым выполнением.

Условие запросаhas "="

Select count(*) from t where DATETIME >='2018-07-27 10.12.12.000000' and DATETIME <= '2018-07-28 10.12.12.000000' 

Возвращает 22 индекса, стоимость которых составляет 20 с.

Я считаю, что запрос без «=» выбирает сканирование индекса, однако запрос с «= частично выберите сканирование таблицы.

1 Ответ

0 голосов
/ 01 марта 2019

В соответствии с вашим вопросом:

  1. Текущий механизм индексации заключается в том, что оптимизатор сопоставляет первый доступный индекс, что означает, что запрос сначала выберет первый созданный индекс и выберетиндекса зависит от порядка, в котором индекс создается.В случае индекса запрос сначала выполнит сканирование индекса.

  2. Убедитесь, что узлы в каждой группе данных содержат индекс, в противном случае неиндексированные узлы данных возьмут таблицуscan.

  3. Выполнить запрос анализа оптимизации.Analyze - это новая функция SequoiaDB v3.0.Он в основном используется для анализа сборов, индексации данных и сбора статистической информации, а также для обеспечения оптимального алгоритма запросов для определения индекса или сканирования таблицы.Проанализируйте конкретную ссылку на использование: http://doc.sequoiadb.com/cn/index-cat_id-1496923440-edition_id-300

  4. Просмотрите план доступа с помощью find.explain (), чтобы просмотреть стоимость запроса

...