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

时间:2015-06-01 18:24:16

标签: sql sqlite group-by sql-like

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

示例如下是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在上面类似的子查询案例中起作用,但也不适用于直接查询。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

> 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