AR与sqlite3:列的设置限制是否对db大小有影响?

时间:2016-12-12 00:21:49

标签: ruby activerecord sqlite rails-activerecord

我对AR和Sqlite有点新鲜。我正在使用大数据集,并努力找出优化数据库速度和大小的优秀做法。

EG。我在列中存储了一个字节的整数,它有助于将列声明为:

table.integer :field, limit: 1

这有助于sqlite节省空间吗?

1 个答案:

答案 0 :(得分:1)

来自fine SQLite manual

  

<强> 2。存储类和数据类型

     

存储在SQLite数据库中(或由数据库引擎操纵)的每个值都具有以下存储类之一:

     
      
  • [...]
  •   
  • INTEGER 即可。该值是有符号整数,存储为1,2,3,4,6或8个字节,具体取决于值的大小。
  •   
  • [...]
  •   

因此,SQLite中值的存储要求取决于值本身而不是列类型。 SQLite驱动程序将完全忽略您的:limit选项,同样,字符串也会忽略:limit,因为SQLite没有char(n)varchar(n)类型,它只是text

SQLite类型系统相当松散,阅读Datatypes in SQLite上的整个文档部分是个不错的主意。