Android 搜索查询的最佳方式是什么?
我有一个很大的SQLite数据库(45MB)。我使用内部联接从不同的表中获取数据。然而,它的工作非常缓慢。也许这取决于我正在测试的手机(三星Galaxy Ace)。为了使查询非常快速,应该做些什么? a) 为表创建索引 b) 创建新表,其中包括我需要的表 c) 另一种方式,你建议 我在做表格:入口,r_ele,k_ele,感官,带连接的光泽Android 搜索查询的最佳方式是什么?,android,sqlite,indexing,query-optimization,inner-join,Android,Sqlite,Indexing,Query Optimization,Inner Join,我有一个很大的SQLite数据库(45MB)。我使用内部联接从不同的表中获取数据。然而,它的工作非常缓慢。也许这取决于我正在测试的手机(三星Galaxy Ace)。为了使查询非常快速,应该做些什么? a) 为表创建索引 b) 创建新表,其中包括我需要的表 c) 另一种方式,你建议 我在做表格:入口,r_ele,k_ele,感官,带连接的光泽 query = "SELECT" + " e.id AS _id," + " ke.id AS ke_id," + " k
query = "SELECT" + " e.id AS _id," + " ke.id AS ke_id,"
+ " ke.fk as ke_fk," + " ke.value as ke_value,"
+ " re.id AS ke_id," + " re.fk as re_fk,"
+ " re.value as re_value," + " s.id AS s_id,"
+ " s.fk as s_fk," + " g.id AS g_id," + " g.fk as g_fk,"
+ " g.lang," + " g.value as g_value" + " FROM entry e"
+ " INNER JOIN k_ele ke ON e.id = ke.fk"
+ " INNER JOIN r_ele re ON e.id = re.fk"
+ " INNER JOIN sense s ON e.id = s.fk"
+ " INNER JOIN gloss g ON s.id = g.fk"
+ " WHERE g.lang IS NULL AND g.value like '"
+ lookingFor + "%' GROUP BY g.value LIMIT 5 ";
如果您有一个大型数据库,并且在运行中执行了这么多连接,那么性能肯定会很慢。我也有类似的问题。我解决这个问题的方法是通过在应用程序初始化时连接相应的表来创建带有所需列的临时表 如果数据是动态的,则需要在需要时更新临时表中的数据。但是,如果更改数据的大小不是很大,那么更新不会真正产生任何性能问题
创建临时表的好处是,较长的操作只有一次,并且在启动时进行。请发布表结构和查询,以便我们提供帮助。添加的表结构…是否有任何索引或主键/唯一约束?是否有关于gloss(值)的索引?或者更好的是光泽(value、lang、fk、id)