未使用表达式索引 (JSON_EXTRACT)

Index on expression (JSON_EXTRACT) not used

我在让 SQLite 为表达式建立索引时遇到问题。具体来说,我想在 JSON 对象中的特定 属性 上创建索引。

CREATE TABLE test (tags JSON);
INSERT INTO test VALUES(JSON_OBJECT('someKey', 'someValue'));

CREATE INDEX test_idx ON test(JSON_EXTRACT(tags, '$.someKey'));
EXPLAIN QUERY PLAN SELECT JSON_EXTRACT(tags, '$.someKey') FROM test;

这个查询计划说:

SCAN TABLE test

我期待的是某种 SEARCH TABLE test USING INDEX...

关于如何更正此问题的任何想法?

事实证明,如果我尝试 SELECT 索引并没有被使用。

我必须在 WHEREORDER BY 子句中使用 JSON_EXTRACT() 表达式。如果我这样做,效果很好。

EXPLAIN QUERY PLAN SELECT * FROM test WHERE JSON_EXTRACT(tags, '$.someKey')="asdf";

SEARCH TABLE test USING INDEX test_idx (=?)

Index是一棵平衡树,用于定位和排序。除非在 WHERE 或 ORDER BY 子句

中,否则表达式不需要定位或排序