当考虑仅有两个可能值时,0和1或True和False,显然BIT(1)做得更好:
- BIT(1)仅强制只有2个可能的值:0和1,而TINYINT(1)可以接受任何小于10的整数值(0、1、2、3、4、5....),这可能会产生歧义。
- 多个BIT(1)列可以合并为字节,因此它们所需的空间比多个TINYINT(1)列要少。
那么为什么MySQL将布尔值解释为TINYINT(1),而不是BIT(1)?在处理布尔值时使用TINYINT(1)是否有优势?
当考虑仅有两个可能值时,0和1或True和False,显然BIT(1)做得更好:
那么为什么MySQL将布尔值解释为TINYINT(1),而不是BIT(1)?在处理布尔值时使用TINYINT(1)是否有优势?
这取决于版本、数据库引擎和驱动程序。
但是,当然,BIT 优于 TINYINT。
只是传统和惯性使得 TINYINT 仍被使用...
TINYINT(1)
,但没有充分的理由。 - Michael Berkowski