相关疑难解决方法(0)

具有非常大的数据库文件的sqlite的性能特征是什么?

我知道sqlite对于非常大的数据库文件表现不佳,即使它们受支持(曾经在sqlite网站上发表评论,说明如果你需要的文件大小超过1GB,你可能要考虑使用企业rdbms.再找不到它,可能与旧版本的sqlite有关.

但是,出于我的目的,我想在考虑其他解决方案之前了解它到底有多糟糕.

我说的是数千兆字节的sqlite数据文件,从2GB开始.有人对此有经验吗?任何提示/想法?

database sqlite performance

317
推荐指数
9
解决办法
16万
查看次数

我应该选择什么来获得更好的脚本性能和数据库大小,NULL或0?

在我的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(NULL1).(只有这两种可能性).

现在,我将它们设置为NULL,但我认为如果使用0代替它更好,因为知道PHP 中的0也是空的.

最后,我的问题是两个.

  1. 成千上万的NULL记录是否增长而没有DB而不是数千条0记录的原因?
  2. NULL0是否会以不同的方式影响PHP执行的性能?如果是这样,mySQL和PHP的最佳组合是什么,如上所述的请求检查?

更新

在我的问题1,我的问题是如果NULL实际上是null的大小,否则是+3字节对吗?

php mysql

5
推荐指数
1
解决办法
128
查看次数

当涉及范围时,索引中的第一个更高的基数列?

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具有低得多的基数.

该查询涉及extfiletime:

WHERE ext = '...'
  AND filetime BETWEEN ... AND ...
Run Code Online (Sandbox Code Playgroud)

这两个指标中的哪一个更好?为什么?

mysql indexing performance query-optimization mariadb

5
推荐指数
1
解决办法
560
查看次数