性能优化:如果不是密钥,则允许/不允许空与性能

时间:2011-11-14 06:54:22

标签: mysql performance optimization null

  

可能重复:
  NULL in MySQL (Performance & Storage)

如果出现以下情况,您是否强烈建议取消选中表中列的NULL:

  • 该列不是键,
  • 该列可以选择或插入到表或UPDATEd中,但从未在WHERE,连接和任何查询的其他部分中使用(当我们决定索引哪个列以获得更好的性能时,可以计算WHERE,JOIN等)。

因此,如果您为上述列选中“NULL”复选框(即允许NULL),它会影响性能吗?

我希望答案(至少对MySQL来说)是:

  • 不,即使是1%,也不会影响
  • 不,它根本不会影响。

1 个答案:

答案 0 :(得分:1)

是的,我建议您创建任何不需要NULL,NOT NULL的列。

在我看来,它是SQL中的“错误”之一,默认情况下启用了NULL。

原因与性能无关,但与应用程序的正确性无关。如果你有一个必须的列值,那么使它成为非NULL更有意义(实际上,NULL值将是一个错误)。如果有意义,请使用DEFAULT值。

简而言之:除非数据库结构中存在有效的原因,否则任何列都不应该为空。

另请注意,NULL在唯一索引中执行“特殊”操作 - 允许使用NULL的多行。

相关问题