Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design SQLite整数优化_Database Design_Sqlite_Database Optimization - Fatal编程技术网

Database design SQLite整数优化

Database design SQLite整数优化,database-design,sqlite,database-optimization,Database Design,Sqlite,Database Optimization,我正在尝试从一个SQLite数据库中剥离一些额外的大小,我正在从我的一个Web服务提取到一个iOS应用程序。我正在做一些单独的测试,是什么让表变得比必须的大 我有一个价格表,它有大约223k条记录。只需将2个实列转换为整数*100,就可以将表的大小(以KB为单位)恢复34%。这确实令人震惊 因为我注意到了这一荒谬的差异,所以我检查了一个表,其中有一列整数类型,有相同的(223k)记录 下面是我注意到的(每次测试后我都会用真空吸尘器): 用NULL、0或1填充所有行将生成一个1,9MB的文件 用

我正在尝试从一个SQLite数据库中剥离一些额外的大小,我正在从我的一个Web服务提取到一个iOS应用程序。我正在做一些单独的测试,是什么让表变得比必须的大

我有一个价格表,它有大约223k条记录。只需将2个实列转换为整数*100,就可以将表的大小(以KB为单位)恢复34%。这确实令人震惊

因为我注意到了这一荒谬的差异,所以我检查了一个表,其中有一列整数类型,有相同的(223k)记录

下面是我注意到的(每次测试后我都会用真空吸尘器):

  • NULL
    0
    1
    填充所有行将生成一个1,9MB的文件
  • 100
    填充所有行将产生一个2,1MB的文件
  • 1000
    -
    10000
    填充所有行将生成一个2,4MB的文件
  • 100000
    填充所有行将产生一个3,0MB的文件
  • 10000000
    填充所有行将产生一个3,1MB的文件

我真的觉得在整型字段类型的动态上存在开销。在SQLite中存储
int
值是否有一种更便宜的方法,或者这是唯一的结局?

您已经正确地推断了SQLite中使用的内部存储类型


减少通过web下载的数据大小的最佳方法是压缩文件。

是的,我已经使用了gzip压缩,这是一个重大的成功,但我只是对仅仅用整数丢失如此大量的千字节感到非常失望。我强烈考虑使用JSON来绕过这个问题。@Allendar JSON也有可变长度的整数,因为它们存储为文本。仅用于存储223k
10000000
s的整数位数就需要1.7MB的空间。