gpt4 book ai didi

sql - 处理数据库中的魔数(Magic Number)有哪些好的策略?

转载 作者:行者123 更新时间:2023-12-04 23:34:20 31 4
gpt4 key购买 nike

我正在处理各种具有 WHERE 子句的过程,如下所示:

WHERE ... AND ( ( myTbl.myValue = 1234) 
or (myTbl.myValue = 1235) )-- Value = No

我和一些同事讨论过这个问题,这种代码似乎是不可避免的。我认为将这种代码放在一个(并且只有一个)地方是个好主意。那可能是一个 View ,也可能是一个表等。我在想一个从基础表中选择的 View ,并且有一个位字段,表示 1234 或 1235 的值是 0。或者是一个“N”,等等。我可以随意添加“否”值而无需更改任何代码的方式。我不会为此使用 UDF,如果您在连接中使用它,则会有太多的函数调用。

处理数据库中的特殊值还有哪些其他选择? View 是一个很好的解决方案吗?有什么办法可以完全避免这种事情吗?我在想,如果该值因任何原因需要更改,我不想处理更改数百个过程。另一方面,额外的连接会影响性能。

更新:如果有人有摆脱这些该死的东西的策略,那也很棒。就像我说的,和同事讨论过,这些事情在数据库层有很多业务逻辑的组织中似乎是不可避免的。

PS:我看到了一些魔数(Magic Number)问题,但没有特定于数据库的问题。

最佳答案

我们在谈论多少个魔数(Magic Number)?如果少于几千,将它们放在一张表中并进行连接。如果它们在 WHERE 子句中经常用作一致的分组(如示例中的 1234 和 1235),则分配一个类别列并使用 IN 或 EXISTS。 (如果使用少量的魔数(Magic Number)和适当的索引,这些都不会对性能产生有意义的影响。)

除了特别的 SQL 语句之外,我讨厌像您的示例中的那些硬编码数值。它使维护成为以后真正的 PITA。

关于sql - 处理数据库中的魔数(Magic Number)有哪些好的策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/617143/

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