Android 如何在sqlite中加速数据访问?

Android 如何在sqlite中加速数据访问?,android,sqlite,Android,Sqlite,我在android设备上有一个sqlite数据库,其方案如下: create table 'main' ('_id' integer primary key, 'word' text unique not null); 行数将来不会更改,当前为600000 由于性能速度在应用程序中非常重要,我想找到一种方法来加速应用程序中经常使用的以下两个查询: select * from [main] where '_id'=... select * from [main] wher

我在android设备上有一个sqlite数据库,其方案如下:

    create table 'main' ('_id' integer primary key, 'word' text unique not null);
行数将来不会更改,当前为600000

由于性能速度在应用程序中非常重要,我想找到一种方法来加速应用程序中经常使用的以下两个查询:

    select * from [main] where '_id'=...
    select * from [main] where 'word'=...
到目前为止,我被告知使用索引或批量事务。但我不知道如何利用这两种方法,也不知道它们能在多大程度上提高性能。顺便问一下,您知道其他提示吗?

使用EXPLAIN QUERY PLAN查看数据库引擎需要做多少工作才能满足您的查询:是需要进行完整的表扫描,还是可以使用索引快速满足查询

主键约束和唯一约束都将自动创建索引,因此您无需自己为这些列创建索引

在选择中,删除列名中的引号-它们将被视为文字而不是列名

例如:

sqlite> create table 'main' ('_id' integer primary key, 'word' text unique not null);
sqlite> explain query plan select * from [main] where '_id'='...';
0|0|0|SCAN TABLE main (~1000000 rows)
sqlite> explain query plan select * from [main] where _id='...';
0|0|0|SEARCH TABLE main USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
sqlite> explain query plan select * from [main] where 'word'='...';
0|0|0|SCAN TABLE main (~1000000 rows)
sqlite> explain query plan select * from [main] where word='...';
0|0|0|SEARCH TABLE main USING COVERING INDEX sqlite_autoindex_main_1 (word=?) (~1 rows)

我建议您进行一些研究,以了解有关索引和批量事务的更多信息。它们通常用于大多数数据库,而不仅仅是SQLite.p.s。主键会自动创建一个索引,因此在_id字段中选择应该相对有效。代码专家:谢谢。我想知道,如果列具有“唯一”限制,那么在默认情况下创建索引是否是在DMES?中加速数据访问的唯一可能的方法。如果只选择真正需要的列,而不是全部*,则会出现一些加速。