当前位置:  开发笔记 > 后端 > 正文

Tinyint vs Bit?

如何解决《TinyintvsBit?》经验,为你挑选了4个好方法。

我不想在这里触发一场宗教战争,但似乎有两种思路可以在数据库中表示布尔值.有人说bit是适当的数据类型,而其他人认为tinyint更好.

我所知道的唯一区别是这些:

bit:存储大小为1位,可能的值为0或1

tinyint:存储大小为1个字节,可能的值为0-255

当您需要表示布尔值时,哪种数据类型更好?是tinyint值得的额外开销"以防万一"你需要值> 1?



1> ScottS..:

向表中添加位列时,它将占用每个记录中的整个字节,而不仅仅是一个位.添加第二位列时,它将存储在同一个字节中.第九位列需要第二个存储字节.具有1位列的表将不会获得任何存储优势.

Tinyint和bit都可以使用,我已成功使用它们并且没有强烈的偏好.


@Jonz请参见[here](http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html)获取MySQL.

2> Mike Robinso..:

比特......除非你是"真/假/文件未找到"部落

万一你没有得到参考...

在Linq2SQL的情况下,位使用true/false,这使得编程更容易.这两者都有优势.

还需要考虑编程维护.如果您(或初级实习生程序员)使用2,3,25,41,167,200等会怎样?记录在哪里?比特是自我记录的,非常普遍.


位可以为空,因此您仍然可以使用T/F/FNF.
和FNF相比,NULL是多么邪恶?:)真的值得thedailywtf!

3> John Rudy..:

我在适当时使用位.除了它在语义上是正确的类型(语义计数!)之外,单行中的多个位字段(最多8个)(无论如何在SQL Server上)可以合并到单个存储字节中.在第八个之后,接下来的8需要一个额外的字节,依此类推.

参考文献:

SQL 2000

SQL 2005

SQL 2008



4> armandino..:

对于MySql用户 - 为什么不在MySQL中使用BIT列


嗯,看起来更像是"为什么你不应该使用MySQL"条目...... :-)
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有