mysql,选择CoalesceOverload

mysql,选择CoalesceOverload,mysql,Mysql,如果在每个SELECT列上使用COALESCE,那么MySql的开销会是多少,因为我已经厌倦了在我的VB应用程序中出现DBNUll错误。我应该担心吗 Select COALESCE(price_small_breed, 0), COALESCE(discount_small_breed, '') From tblServicePrice Where service_id = .... just some example found on net 提前感谢也许最好的解决方案是更新模式,使字段不允

如果在每个SELECT列上使用COALESCE,那么MySql的开销会是多少,因为我已经厌倦了在我的VB应用程序中出现DBNUll错误。我应该担心吗

Select COALESCE(price_small_breed, 0), COALESCE(discount_small_breed, '') From tblServicePrice Where service_id = .... just some example found on net

提前感谢

也许最好的解决方案是更新模式,使字段不允许空值。您可以关闭null,并设置默认值(例如0或“”)来解决此问题。

也许最好的解决方案是更新架构,使字段不允许null值。您可以关闭null,并设置默认值(例如0或“”)来解决此问题。

不,您不应该担心开销

我所知道的关于
coalesce()
的唯一性能问题是在某些版本的SQL Server(不是MySQL!)中,第一个参数在不为NULL时会被计算两次。这是一个昂贵的问题,例如子查询

但是,一般来说,与将数据移入和移出数据库的成本相比,内置函数的开销将是最小的


在更复杂的查询中有一个例外,在这种情况下,使用诸如
coalesce()
之类的函数可能会阻止索引用于某些操作。同样,这不适用于您的情况。

不,您不应该担心开销

我所知道的关于
coalesce()
的唯一性能问题是在某些版本的SQL Server(不是MySQL!)中,第一个参数在不为NULL时会被计算两次。这是一个昂贵的问题,例如子查询

但是,一般来说,与将数据移入和移出数据库的成本相比,内置函数的开销将是最小的


在更复杂的查询中有一个例外,在这种情况下,使用诸如
coalesce()
之类的函数可能会阻止索引用于某些操作。同样,这不适用于您的情况。

这是实际实现的方式(我试图避免空值),但当某些左连接找不到指定的索引时,返回的结果将包含空值。。。因此,尽管我很想避开它们,但它们仍会潜入我的应用程序:)这就是实际实现的方式(我试图避免空值),但当某些左连接找不到指定的索引时,返回的结果将包含空值。。。所以,尽管我很想逃离他们,他们还是偷偷进入我的应用程序:)非常感谢,先生,这是我一直在寻找的答案。非常感谢,先生,这是我一直在寻找的答案。