Android Room Entity 为某个字段添加索引

更新日期: 2021-02-18 阅读次数: 5244 字数: 207 分类: Android

担心 Android 本地 SQLite 数据库存储数据过多时,造成查询效率下降,所以想给字段加上索引。

添加索引示例

例如,我想给待办事项这个表(todos)的完成状态字段(done)添加索引。

设置 indices 即可:

@Entity(
    tableName = "todos",
    indices = [Index(value = ["done", ])]
)
data class Todo(
    var title: String,
    var content: String,
) {
    @PrimaryKey(autoGenerate = true) var id: Int = 0
    var done: Int = 0

    override fun toString() = title
}

添加唯一索引

如果是想添加唯一索引,需要使用 unique 参数:

indices = [Index(value = ["done", ], unique = true)]

当然,目前这个场景并不需要。

indices 是什么意思

indices 是 index 的复数形式。即,索引列表。

第一次知道 indices 这个词。。。第一眼跟 slice 混了。

参考

  • https://developer.android.com/training/data-storage/room/defining-data#column-indexing

tags: android room

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式