【发布时间】:2012-05-08 13:54:57
【问题描述】:
只使用了几个月的 SQL(到目前为止,这个地方帮助很大,谢谢大家!) 但即使我是一个初学者数据库程序员,我已经注意到有很多大型连接我发现自己一遍又一遍地重复。我正在考虑为常用的连接创建一个表值函数,并允许将参数传递给该函数以过滤结果。
例如。 而不是写
SELECT *
FROM T1 join T2 on T1.A = T2.A
join T3 on T2.B = T3.B
join T4 on T3.C = T4.D
WHERE T1.D = '15' AND T2.D = '20' AND T3.C = '12'
我会写
SELECT *
FROM dbo.SOME_FUNCTION(' T1.D = '15' AND T2.D = '20' AND T3.C = '12' ')
我的问题就是这个。这是我应该尝试做的事情吗?还是我懒得做这个?
整天都在尝试研究/编写这个函数,并且在这样做时遇到了很多/很多问题。我知道最终我可以/将使它发挥作用,只是想知道这是否值得我花时间。
PS:对不起,如果这个问题很愚蠢,不是我想在这个网站上问的第一个问题,但这里是。
【问题讨论】:
-
这不是一个愚蠢的问题,您正在努力提高效率。但是,DRY 原则在应用于关系数据库编程时具有显着的性能影响,因此在该上下文中应用它时要小心(例如,不要使用嵌套视图(即,引用其他视图的视图)、多语句表值函数的性能不如内联函数(请参阅 (stackoverflow.com/questions/2554333/…),不要在标量函数中运行选择查询等)。您必须在性能和优雅之间取得平衡
标签: tsql join sql-function query-parameters