LIKE 和 GROUP BY 的 sqlite3 复合索引用法

sqlite3 compound index usage for LIKE and GROUP BY

我似乎无法让 sqlite3 不使用带有复合索引的 TEMP B-TREE 来进行带有 LIKE 子句和 GROUP BY 子句的查询。似乎只为 WHERE 子句使用索引。由于 LIKE 不区分大小写,因此我尝试在索引中使用 COLLATE NOCASE 的所有组合制作索引。

示例如下,索引为 foo、boo。

SELECT foo, boo FROM mytable WHERE foo LIKE 'hi%' GROUP BY boo;

还尝试使用子查询,例如

SELECT foo, boo FROM (SELECT foo, boo FROM mytable WHERE foo LIKE 'hi%') GROUP BY boo;

有趣的是,ORDER BY 在上面类似的子查询情况下工作,但也不适用于直接查询。

感谢任何帮助!

> CREATE TABLE mytable(foo, boo, [...]);
> CREATE INDEX bfi ON mytable(boo, foo COLLATE NOCASE);
> EXPLAIN QUERY PLAN SELECT foo, boo FROM mytable WHERE foo LIKE 'hi%' GROUP BY boo;
0|0|0|SCAN TABLE mytable USING COVERING INDEX bfi