我有一个大的sqlite数据库。它的185mb。
此查询大约需要5秒,并返回2行。我为user.name添加了一个索引,而不是Content.user_id。它仍然需要很多秒。 sqlite可以像这样处理大文件吗?是否有一个简单的修复私人应用程序,如告诉sqlite在应用程序启动时将所有内容放入ram? (仅限开发人员使用的C#.NET)。
select Content.*,name from user
join Content on Content.user_id=user.id
where user.name like 'some_name' order by some_col ASC;
答案 0 :(得分:1)
尝试以下方法:
LIKE 'some_name'
替换为= 'some_name'
。 LIKE queries with underscore or percent sign will not perform as well as equality checks。根据第一个百分号或下划线的位置,他们可能无法在user.name
上使用您的索引。ANALYZE
。跟进您的回答:
我认为您启用了不区分大小写的LIKE编译指示。这意味着:
您应该重新创建数据库,并在表用户的name COLLATE NOCASE
列的定义中使用name
。因此,对用户名的所有比较测试都不区分大小写,您的索引也是如此。这样,不区分大小写的LIKE也可以使用索引。
答案 1 :(得分:0)
也许您应该查看indexes