我有一个表,有几个帐户字段,如下所示:
MAIN_ACCT GROUP_ACCT SUB_ACCT
我经常需要这样组合:
SELECT MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT FROM ACCOUNT_TABLE
我想要一个自动执行此操作的计算字段,所以我可以说:
SELECT ACCT_NUMBER FROM ACCOUNT_TABLE
这样做最好的方法是什么?
我正在使用sql Server 2005.
解决方法
ALTER TABLE ACCOUNT_TABLE ADD ACCT_NUMBER AS MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT PERSISTED
这将持续一个计算列,并且如果您有大量记录,则可以在视图或UDF中的计算中执行更好的选择(一旦初始创建列,可能会很慢,并且应该在低使用时间期间发生) ).它将减慢插入和更新.通常我发现一个缓慢的插入或更新被用户所容忍,而不是延迟选择,除非你遇到锁定问题.
这样做的最佳方法将取决于您的使用情况以及您需要的性能.如果您没有很多记录,或者计算列不会频繁调用,则可能不需要持久化的列,但是如果您经常运行具有该年度的所有记录或其他大量记录的报告数据,您可能会发现持续计算的列对您而言更好.与任何这种性质的任务一样,在你的情况下知道最有效的唯一方法是测试.