定义表的索引

时间:2017-07-26 13:40:10

标签: android performance sqlite indexing sql-optimization

在我的应用中,从数据库加载时遇到性能问题。我有一个使用RecylerView的列表和一个数据光标。一旦记录数超过1000,列表变得太慢,无法加载或进行任何操作。该查询使用此WHERE子句:COL1 = something AND (COL2 LIKE something OR col3 LIKE something OR col4 LIKE something) AND col5 is NOT NULL

在这种情况下定义索引以获得更好性能的理想方法是什么? 还会减少查询结果中的列数提高性能吗?

1 个答案:

答案 0 :(得分:0)

索引可以帮助您进行搜索或排序。在您的查询中,col1应该被编入索引,如果可以过滤掉多个具有NULL值的行,则可以col5。 (查询每个表只能使用一个索引,因此这需要一个双列索引。)

索引对慢速列表视图无济于事,因为它不会减少列表从数据库加载的数据量。

要加快列表速度,您必须减少条目数。有关如何延迟加载条目,请参阅dynamic listview adding “Load more items” at the end of scroll,但最佳解决方案是添加更好的过滤器,以便您永远不需要加载这么多条目。 (无论如何,用户应该如何处理它们?)