我通过Zentus在Java应用程序中使用SQLite.在这种情况下,我需要在我的数据库中保存和查询Java 值.来自其他RDBMS我创建了如下表来存储长值:long
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Run Code Online (Sandbox Code Playgroud)
此解决方案产生例外行为,但在阅读关于数据类型的SQLite文档后,我理解我的LONG
类型与使用TEXT
=> 相同的效果longValue
存储为文本.
然后,我决定将其更改为INTEGER
(长度是可变的,并且可以存储多达64位的整数,这是Java长度的长度),以便拥有更清晰的代码,可能是为了节省一些磁盘空间并提高性能,因为我的longValues是插入和查询为long
.
在比较创建的数据库的性能和大小后,我无法看到以下任何区别:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)
Run Code Online (Sandbox Code Playgroud)
有关该主题的任何评论,经验或感受?
Tan*_*128 22
在SQLite中,数据类型是每值,而不是每列.因此,当您插入整数时,无论列类型如何,它们都将存储为整数.
SQLite自动选择正确的大小.来自http://www.sqlite.org/datatype3.html:
整数.该值是有符号整数,存储为1,2,3,4,6或8个字节,具体取决于值的大小.
SQLite使用动态类型,无架构.
在查看创建的数据库的性能和大小后,我无法看到以下任何区别:
目前没有任何区别.INTEGER具有整数亲和性,LONG具有数字亲和性.并且,http://www.sqlite.org/datatype3.html说:
使用INTEGER关联的列与具有NUMERIC关联的列的行为相同.INTEGER和NUMERIC亲和力之间的差异仅在CAST表达式中很明显.
归档时间: |
|
查看次数: |
13575 次 |
最近记录: |