我知道sqlite对于非常大的数据库文件表现不佳,即使它们受支持(曾经在sqlite网站上发表评论,说明如果你需要的文件大小超过1GB,你可能要考虑使用企业rdbms.再找不到它,可能与旧版本的sqlite有关.
但是,出于我的目的,我想在考虑其他解决方案之前了解它到底有多糟糕.
我说的是数千兆字节的sqlite数据文件,从2GB开始.有人对此有经验吗?任何提示/想法?
在我的INNODB mySQL数据库中,我有一些名为active,verified,disabled等列,如name,surname.
更好地解释它
Column Type Null Default
expires int(10) Yes NULL
verified tinyint(1) Yes NULL
disabled tinyint(1) Yes NULL
Run Code Online (Sandbox Code Playgroud)
当用户登录我的页面时,我使用PHP并检查例如
if ($row['disabled']) { }
Run Code Online (Sandbox Code Playgroud)
知道他是disabled(NULL或1).(只有这两种可能性).
现在,我将它们设置为NULL,但我认为如果使用0代替它更好,因为知道PHP 中的0也是空的.
最后,我的问题是两个.
更新
在我的问题1,我的问题是如果NULL实际上是null的大小,否则是+3字节对吗?
CREATE TABLE `files` (
`did` int(10) unsigned NOT NULL DEFAULT '0',
`filename` varbinary(200) NOT NULL,
`ext` varbinary(5) DEFAULT NULL,
`fsize` double DEFAULT NULL,
`filetime` datetime DEFAULT NULL,
PRIMARY KEY (`did`,`filename`),
KEY `fe` (`filetime`,`ext`), -- This?
KEY `ef` (`ext`,`filetime`) -- or This?
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
Run Code Online (Sandbox Code Playgroud)
表中有一百万行.文件时间大多不同.数量有限ext.因此,filetime具有高基数并且ext具有低得多的基数.
该查询涉及ext和filetime:
WHERE ext = '...'
AND filetime BETWEEN ... AND ...
Run Code Online (Sandbox Code Playgroud)
这两个指标中的哪一个更好?为什么?