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

文章目录

    担心 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

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式