代码之家  ›  专栏  ›  技术社区  ›  jandersson

SQL中的代码重用和模块化

  •  13
  • jandersson  · 技术社区  · 16 年前

    对于SQL存储过程编程来说,代码重用和调制是个好主意吗?

    如果是这样,将这些特性添加到SQL存储过程代码库的最佳方法是什么?

    我通常为常见和重复的任务创建标量值函数。我发现它既简化了与现有程序类似的新程序的开发,也大大有助于错误跟踪和故障排除。

    不过,由于性能问题,我尽量不使用表值函数。

    我的经验法则是,如果它是一个计算,并且在多个地方使用,那么我创建一个标量值函数。

    5 回复  |  直到 16 年前
        1
  •  7
  •   Eric Z Beard    16 年前

    您将发现,在查询中使用函数对性能是一场灾难。这些函数会成为优化器的黑匣子,因此,当您在表中找到大量行时,您最终会将函数调用重新编码回查询中,以使其快速运行。

    处理常见计算的更好方法是使用触发器将它们插入到新列中,或插入/更新查询中。这样,你就可以对计算出的值进行索引,并直接使用它,而不是在每次需要时计算出来。

        2
  •  3
  •   LeleDumbo    16 年前

    在代码重用方面,Sql并没有给你太多的灵活性。当涉及到计算或其他不涉及修改表格的任务时,我通常会创建函数。但是所有涉及到写表之类的任务,我通常使用存储过程来更好地控制事务。

        3
  •  1
  •   Ian1971    16 年前

    您可以将代码分解为单独的存储过程,以帮助将复杂的存储过程分解为更易于管理的块。你也可以做同样的事情来打破在函数中不起作用的常见逻辑。把它想象成一种类似于提取方法重构的方法。

        4
  •  0
  •   Robert Gould    16 年前

    从应用程序的角度来看,另一种方法是使用绑定重用SQL查询。但这可能不是你想要的

        5
  •  0
  •   jandersson    16 年前

    接下来,我确实遇到了一些性能问题,而且优化器似乎无法为函数中的代码选择正确的索引。

    因此,我必须使用索引提示(带有关键字)指定正确的索引,以解决性能问题。