源码使用该作者称之为“舱单打字”的东西,这基本上意味着SQLite是动态类型:您可以在“INT”列存储VARCHAR值,如果你想

这是一个有趣的设计决策,但每当我使用的SQLite,我已经用它就像一个标准的关系数据库管理系统,它们好像是静态处理的类型。事实上,我从来没有设计在其他系统中的数据库时,希望对动态类型的列。

所以,当是该功能有用吗?有没有人发现在实践中它很好地利用这已经不能用静态类型的列上做很容易?

有帮助吗?

解决方案

这真的只是使类型更容易使用。你不需要担心这个领域需要多大是在数据库级别了,或者你的intergers多少digets即可。或多或少是一个“为什么不呢?”事情。

在另一边,在SQL Server静态类型允许系统搜索和索引更好,在某些情况下要好得多,但对于所有应用程序的一半,我怀疑数据库性能的提升会的问题,或者他们的表现是“差'其他原因(临时表被创建的每个选择的,指数的选择,等等)。

我使用SQLite所有的时间对我的.NET项目作为客户端缓存,因为它太容易太使用。现在,如果他们只能得到它使用的GUID相同的SQL服务器我会成为一个快乐的人。

其他提示

动态类型是用于存储之类的配置设置是有用的。以Windows注册表,例如。每个键是很多像具有以下形式的SQLite表:

CREATE TABLE设置(名称TEXT PRIMARY KEY,值);

,其中值可以是NULL(REG_NONE)或整数(REG_DWORD / REG_QWORD),TEXT(REG_SZ),或BLOB(REG_BINARY)。

另外,我会和有关不执行字符串的最大尺寸的有用性JASONS同意。因为大部分的时间,这些限制是纯粹arbitary,并且可以指望有一天发现需要被存储在你的VARCHAR(30),一个32字节字符串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top