【问题标题】:defining index for table为表定义索引
【发布时间】:2017-07-26 13:40:10
【问题描述】:

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

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

【问题讨论】:

  • RecyclerView.Adapter
  • 我有一个扩展 RecyclerView.Adapter 的自定义适配器
  • 你的意思是任何特定的方法或整个适配器?

标签: android performance sqlite indexing sql-optimization


【解决方案1】:

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

索引无法帮助处理缓慢的列表视图,因为它不会减少列表从数据库加载的数据量。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2012-12-08
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多