未使用表达式索引 (JSON_EXTRACT)

Bra*_*rad 5 sqlite database-indexes

我在让 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;
Run Code Online (Sandbox Code Playgroud)

这个查询计划说:

扫描表测试

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

关于如何纠正这个问题有什么想法吗?

Bra*_*rad 7

事实证明,如果我尝试使用该索引,则不会使用该索引SELECT

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

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

使用索引 test_idx (=?) 进行搜索表测试