gpt4 book ai didi

mysql ifnull(...) 是否会阻碍索引的使用?

转载 作者:行者123 更新时间:2023-11-29 18:22:10 25 4
gpt4 key购买 nike

我有一个包含整数值的表,我需要按列的总和进行查询:

    id, A, B, C
1, 21, 32, null
2, 9, 0, 124
3, null, null, 6

SELECT * FROM tbl WHERE B+C > 50

这不起作用,因为不允许添加 null。当前的实现是将所有空值设置为 0,并为每列添加一个单独的列来说明 0 是否实际上意味着空值:

id, A, B, C, A_null, B_null, C_null
1, 21, 32, 0, false, false, true
2, 9, 0, 124, false, false, false
3, 0, 0, 6, true, true, false

我认为这不是很优雅,而是想使用 ifnull 函数:

SELECT * FROM tbl WHERE ifnull(B,0)+ifnull(C,0) > 50

这是否会带来很大的性能损失或其他缺点?

该表有数百万行。

最佳答案

你总是可以使用

    isnull(column_name ,0)

这将在空值中插入 0,然后您可以对它们进行求和。

ifnull 和 isnull 之间的区别 - ifnull 有两个参数;一种表示该值是否为空,另一种表示该值不为空。

isnull 只是简单地将一个值插入到所有空值中,我认为这对于这个问题来说会更简单。

关于mysql ifnull(...) 是否会阻碍索引的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46485460/

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