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