gpt4 book ai didi

mysql - 在对数据库中的可空列进行比较之前是否需要进行 NULL 值检查?

转载 作者:可可西里 更新时间:2023-11-01 08:28:42 26 4
gpt4 key购买 nike

我想知道在数据库中进行比较之前执行空值检查是否有必要或一个好的做法,尤其是在我正在处理这些数据库的 MySQL 和 MSSQL 上。如果执行空检查,是否会影响性能?

简而言之,就生成的结果和性能而言,以下 MySQL SQL 中的版本 1 和版本 2 有何不同?

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (
id INT AUTO_INCREMENT PRIMARY KEY,
intval INT NULL DEFAULT NULL,
strval VARCHAR(32) NULL DEFAULT NULL,
KEY idx_intval (intval),
KEY idx_strval (strval)
);

INSERT INTO t1 (intval, strval) VALUES
(2, 'B'),
(1, 'A'),
(NULL, 'C'),
(4, NULL);

-- Version 1
SELECT * FROM t1 WHERE intval IS NOT NULL AND intval > 1;
SELECT * FROM t1 WHERE strval IS NOT NULL AND strval IN ('A', 'C');

-- Version 2
SELECT * FROM t1 WHERE intval > 1;
SELECT * FROM t1 WHERE strval IN ('A', 'C');

DROP TABLE t1;

最佳答案

如果您不使用 IS NULL/IS NOT NULL,则每次与 NULL 的比较都会失败。

所以:

NULL > 1 失败(==> 没有必要指定 INTVAL IS NOT NULL)

NULL IN ('A', 'C') 失败(==> 没有必要指定 STRVAL IS NOT NULL)

关于mysql - 在对数据库中的可空列进行比较之前是否需要进行 NULL 值检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32392768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com