SQLite:深度索引

2024-09-30 12:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于索引的问题。正如您在下面看到的,第一个索引只有2列,第二个索引只有3列。我的问题是,如果第二个索引已经覆盖了第一个索引,因为在开始处有相同的列?有什么想法吗?你知道吗

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);

Thx u前进=)


Tags: indexoncreatereplnrwordscopeix
2条回答

如果有第二个索引,则不需要第一个索引。你知道吗

重要的是列必须相同,并且它们的顺序必须相同。第一个索引中的列与第二个索引中的初始列相同,因此不需要第一个索引。你知道吗

此外,这并不是真正需要的。当数据更改时,每个索引都会产生开销(空间和时间)。所以,你应该坚持第二个索引。你知道吗

是的。 您可以使用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

相关问题 更多 >

    热门问题