Сколько индексов будет использоваться для каждого запроса в SQL / sqlite3? - PullRequest
0 голосов
/ 13 июля 2020

Я обнаружил, что мой запрос выполняется очень медленно, когда две таблицы соединяются вместе для большого объема данных, тогда как для небольшого набора данных это нормально. Мне сказали, что sqlite3 может использовать только один индекс для каждой таблицы в запросе, но я не уверен в этом, кто-нибудь знает, где можно найти информацию? Большое спасибо!

1 Ответ

0 голосов
/ 13 июля 2020

Большую часть информации о том, как sqlite использует индексы, можно найти в следующих URL-адресах документации:

В принципе, каждый раз, когда таблица используется в запросе, не более одного индекса таблицы обычно может быть используется (примечательным исключением является то, что условия OR в WHERE или ON могут допускать несколько индексов, по одному на термин). Планировщик запросов пытается выбрать наиболее подходящий и быстрый. Запуск ANALYZE в заполненной базе данных генерирует статистику, которую можно использовать для улучшения выбора при наличии нескольких возможных индексов.

Важно понимать отчеты EXPLAIN QUERY PLAN для выяснения того, как конкретный запрос решается, и как и какие индексы задействованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...