组织具有大量数据行的表以优化访问时间

时间:2015-12-20 02:54:42

标签: sqlite relational-database large-data

我正在使用一个大约70千兆字节的sqlite3数据库。这个db有三个表:一个有大约3000万行,另外两个有~150和~3亿,每个表从6-11列运行。

行数最少的表占用了大部分空间,因为它包含一个压缩BLOB s的原始数据列,通常每行运行1到6千字节;数据库中的所有其他列都是数字的,压缩数据是不可变的,因此修改效率不高是一个问题。

我注意到在此表的数字列上创建索引:

[15:52:36] Query finished in 723.253 second(s).

需要几倍于在表上创建具有五倍行数的可比索引:

[15:56:24] Query finished in 182.009 second(s).
[16:06:40] Query finished in 201.977 second(s).

BLOB数据存储在单独的表中以便与JOIN进行访问是否更好?每行的额外宽度最有可能成为该表慢速扫描速率的候选者。

我目前的怀疑是:

  1. 这主要是由于从磁盘读取数据的方式,使跳过中等大小的数据变得不切实际,并且操作系统从磁盘读取的每个扇区的可用数据比率非常低,并且
  2. 因此,我不知道作为关系数据库的相对新手,以避免将更大的可变宽度数据放入同一个表中,而不是可能需要在没有索引的情况下进行扫描的其他数据
  3. 但我希望得到一些在该领域有更多知识的人的反馈。

0 个答案:

没有答案