我正在通过Zentus在Java应用程序中使用SQLite。在这种情况下,我需要在数据库中保存和查询JavaJava值。我从其他RDBMS中创建了这个表,如下所示来存储长值:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
此解决方案会产生异常行为,但在阅读SQLite documentation on data types之后,我了解到我的LONG
类型与使用TEXT
=> longValue
存储为文本具有相同的效果。
然后我决定把它改为INTEGER
(它的长度是可变的,可以存储多达64位的整数,这是Java long的长度),这样代码就更整洁了,并且可以节省一些磁盘空间并提高性能,因为我的longValues是作为long
插入和查询的。
在比较了创建的数据库的性能和大小之后,我看不出有什么不同:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
和
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)
对这个话题有什么评论,经历或感受吗?
发布于 2010-08-02 21:21:36
在SQLite中,数据类型是按值的,而不是按列的。因此,当您插入整数时,无论列的类型如何,都会将它们存储为整数。
发布于 2012-02-14 15:09:55
CREATE TABLE ex2(
a VARCHAR(10),
b NVARCHAR(15),
c TEXT,
d INTEGER,
e FLOAT,
f BOOLEAN,
g CLOB,
h BLOB,
i TIMESTAMP,
j NUMERIC(10,5)
k VARYING CHARACTER (24),
l NATIONAL VARYING CHARACTER(16)
);
https://stackoverflow.com/questions/3388098
复制相似问题