首页  >  文章  >  数据库  >  您应该在 MySQL 数据库中接受 NULL 值吗?

您应该在 MySQL 数据库中接受 NULL 值吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-29 19:39:02309浏览

Should You Embrace NULL Values in Your MySQL Database?

当 Null 是正确的数据库选项时

在 MySQL 中使用数据库表时,使用 NULL 值可能会引起关注。尽管其语义意义重大,但一些消息来源建议不要使用它,理由是性能问题。本文深入探讨了适合使用 NULL 的情况,并探讨了其中涉及的权衡。

适合 Null 的情况

在以下情况下适合使用 NULL:

  • 字段真正代表缺失或不适用的值。
  • 从语义上讲,NULL 表示该值不同于“false”和空字符串。

性能注意事项

过去的文章提到过有关可空字段的性能问题。然而,缺乏支持这些说法的经验证据。必须谨慎处理此类声明,依靠可重复的测量而不是闲置的假设。

在 MySQL 中,利用索引可以优化对 NULL 值的搜索。以下示例演示了如何使用带有 NULL 搜索的索引:

mysql> CREATE TABLE foo (
  i INT NOT NULL,
  j INT DEFAULT NULL,
  PRIMARY KEY (i),
  UNIQUE KEY j_index (j)
);

mysql> INSERT INTO foo (i, j) VALUES 
  (1, 1), (2, 2), (3, NULL), (4, NULL), (5, 5);

mysql> EXPLAIN SELECT * FROM foo WHERE j IS NULL;
+----+-------------+-------+------+---------------+---------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key     | key_len | ref   | rows | Extra       |
+----+-------------+-------+------+---------------+---------+---------+-------+------+-------------+
|  1 | SIMPLE      | foo   | ref  | j_index       | j_index | 5       | const |    2 | Using where | 
+----+-------------+-------+------+---------------+---------+---------+-------+------+-------------+

避免空值:一种误导的方法

用零、空白字符串等值替换 NULL或 false 是有缺陷的设计决策。这些值可以代表列内有意义的数据。使用 NULL 可以毫无歧义地使用全部数据值。

以上是您应该在 MySQL 数据库中接受 NULL 值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn