gpt4 book ai didi

sqlite - sqlite索引优化NOT查询

转载 作者:行者123 更新时间:2023-12-03 18:47:17 25 4
gpt4 key购买 nike

当我在sqlite中建立索引时,它会优化该键的查询。但是有时我想找到排除该键某些值的记录,而我的索引似乎根本没有用于优化那些键。我不知道如何编写索引来优化与键上的NOT匹配的查询。

这是我正在谈论的一个示例:

CREATE TABLE place (
id INTEGER PRIMARY KEY,
thing INTEGER NOT NULL,
thekey INTEGER NOT NULL,
unique(thing,thekey));

CREATE INDEX bythekeys ON place(thekey);

EXPLAIN QUERY PLAN SELECT thing FROM place WHERE NOT thekey = ?;
-- => 0 0 0 SCAN TABLE place
EXPLAIN QUERY PLAN SELECT thing FROM place WHERE thekey = ?;
-- => 0 0 0 SEARCH TABLE place USING INDEX bythekeys (thekey=?)

CREATE INDEX bythenotkeys ON ........?


除非查询使用该查询的逻辑取反,否则“ bythekeys”索引会优化根据该关键字查找记录的查询。无论使用NOT还是!=似乎都没有什么不同。它总是只扫描整个表而不使用任何索引。我要像...做局部索引之类的吗?如何优化NOT查询?

最佳答案

数据库假定一列包含许多不同的值。
因此,估计使用!=过滤器不会减少结果数量,不足以使额外的索引查找值得。

如果您实际上只有很少的值,请重写查询,使其使用等式(=)或范围(<>)。

关于sqlite - sqlite索引优化NOT查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com