在Android Sqlite3表上正确使用索引?

时间:2016-04-27 13:35:32

标签: java android indexing sqlite

我想让我的查询合理有效,并且基于我迄今为止的研究,在SQL中,这是通过使用索引来完成的。

例如说我有这张表

CREATE TABLE MYTABLE 
    (_ID INTEGER PRIMARY KEY AUTOINCREMENT,
    NAME_ID INTEGER,
    SOME_VALUE REAL,
    TIMESTAMP TEXT)

从我正在阅读的内容中,会自动为主键字段创建索引(因此_ID已编入索引)和UNIQUE字段,但有时可能会有多个值用于给定的NAME_IDSOME_VALUETIMESTAMP,因此我无法将UNIQUE应用于其中任何一个。

一个常见的查询可能是使用NAME_ID = xdate1 <= TIMESTAMP <= date2&#39;选择此表格中的行。说我应该为NAME_IDTIMESTAMP制作索引是否正确?或者我会制作综合索引:

CREATE INDEX MYTABLE_INDEX on MYTABLE (NAME_ID, TIMESTAMP);

或者这是不正确的方法吗?

如果我创建这些索引,我基本上完成了吗?如果我基于上面显示的NAME_IDTIMESTAMP标准,我是否已完成了所有我需要的工作以帮助确保此表中的未来查询有效?

1 个答案:

答案 0 :(得分:0)

总结:

您所做的事情应该足以满足您的使用需求。

但是,请记住,从长远来看,过早优化往往会导致更多问题。首先模拟一个大型记录集并尝试所有查询。如果您对结果不满意,请创建索引并进行优化。

请记住,索引会加快查询速度,但会减慢插入/更新/删除速度,因此在同一个表中添加太多索引实际上会损害性能。