SQLite: глубины индексов - PullRequest
       2

SQLite: глубины индексов

0 голосов
/ 13 сентября 2018

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

CREATE INDEX ix_repl_lexem_scope_2_nr_3 ON replications (contextL1,normalized_word);

и

CREATE INDEX ix_repl_lexem_scope_2_nr_3 ON replications (contextL1,normalized_word,contextR1);

Спасибо за продвижение =)

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Первый индекс не нужен, если у вас есть второй индекс.

Важно, чтобы столбцы были одинаковыми и чтобы они были в одинаковом порядке . Столбцы в первом индексе совпадают с исходными столбцами во втором индексе, поэтому первый не требуется.

Кроме того, это не очень желательно. Каждый индекс несет накладные расходы (как пространство, так и время) при изменении данных. Итак, вам следует придерживаться второго индекса.

0 голосов
/ 13 сентября 2018

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

sqlite> CREATE INDEX i2 ON t1(a, b);
sqlite> EXPLAIN QUERY PLAN SELECT a, b FROM t1 WHERE a=1; 
QUERY PLAN
`--SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)

см. https://www.sqlite.org/eqp.html

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