我有一个sqlite数据库,目前有几个表中最大的一个拥有超过10,000行。此表有四列:id,术语,定义,类别。我使用了FTS3模块来加速搜索,这对我们有很大的帮助。但是,现在当我尝试从表中获取'下一个'或'上一个'行时,它比我在开始使用FTS3之前花费的时间更长。Android:当读取下一个/上一个行时SQLite FTS3速度变慢
这是我如何创建虚拟表:
CREATE VIRTUAL TABLE profanity USING fts3(_id integer primary key,name text,definition text,category text);
这是我如何获取下/上一个行:
SELECT * FROM dictionary WHERE _id < "+id + " ORDER BY _id DESC LIMIT 1
SELECT * FROM dictionary WHERE _id > "+id + " ORDER BY _id LIMIT 1
当我运行在虚拟表中的这些语句:
- 下一个字段取自〜300ms,
- 上一届是内取〜200ms的
当我与普通表(没有FTS3创建的)做到这一点:
- 下学期的内〜3ms的取,
- 上期是取之内〜2ms的
为什么会出现是一个很大的区别?有什么办法可以提高这个速度吗?
编辑:
我仍然无法使它工作!
感谢您的回应。我已经尝试了你所说的(首先减少/增加id,然后通过它获取数据),并且有改进,但是如果我将添加过滤器(如果我想获取属于特定类别的术语),它将不起作用。我也发现用FTS3'WHERE _id MATCH'10''比'WHERE _id = 10'快很多。 – Marqs