如何最好地从大型SQLite数据库中有效地提取数据?

时间:2017-04-19 12:46:46

标签: r database sqlite

我正在使用SQlite来存储大量数据,并且使用非常简单的查询很难解压缩数据。目前,我的数据库只是一个表,大约有5000万行和15列。我想从这个表中提取一个完整的列。

我尝试过使用RSQlite:dbGetQuery(db, ‘select qs from CSI’)其中qsCSI分别是我的列名和表名。 Qs是字符串。这个查询在我放弃之前运行了几个小时(R版本3.3.3,RSQLite_1.1-2)。

我也尝试过SQLite的数据库浏览器(v3.9.1),使用相同的查询,并在运行几个小时后再次放弃。我没有IDKey /索引,但我想我想要整个列,这不应该有任何影响。

我正在使用16GB Ram的64位Windows机器上运行。如何在合理的时间内从表中提取列?或者,我是否有更好的方式存储数据以便于访问?

1 个答案:

答案 0 :(得分:2)

要获取列值,SQLite必须读取该列的行。因此,要从所有行获取值,它必须实际读取所有内容。

使用此列的索引,您将拥有一个covering index,可以减少从磁盘读取的数据量。

如果您实际上不需要来自同一行的多个值,请考虑将列存储在不同的表中,或使用不同的数据库。