문제

다음과 같은 여러 계정 필드가있는 테이블이 있습니다.

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

이것은 계산 된 열이 유지되며 많은 레코드가있는 경우, Calction in Calculation 또는 UDF보다 선택에서 더 잘 수행 할 수 있습니다 (열의 세밀한 생성이 발생하면 고통스럽게 느리게 발생하고 낮은 사용 시간 중에 발생해야 할 것입니다. ). 인서트 및 업데이트 속도가 느려집니다. 일반적으로 잠금 문제가 발생하지 않는 한 선택의 지연보다 느린 삽입 또는 업데이트가 사용자가 더 잘 견딜 수 있습니다.

이 작업을 수행하는 가장 좋은 방법은 사용량과 필요한 성능에 크게 달려 있습니다. 레코드가 많지 않거나 계산 된 열을 자주 호출하지 않으면 지속되는 열을 원하지 않을 수도 있지만 연중 모든 레코드가있는 보고서를 자주 실행하는 경우 또는 다른 큰 세트를 자주 실행중인 경우 데이터, 지속적으로 계산 된 열이 더 잘 작동한다는 것을 알 수 있습니다. 이러한 성격의 임무와 마찬가지로 상황에서 가장 잘 작동하는 것을 알 수있는 유일한 방법은 테스트하는 것입니다.

다른 팁

이것은 견해를위한 훌륭한 후보입니다.

CREATE VIEW vwACCOUNT_TABLE
AS

SELECT MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT AS ACCT_NUMBER 
FROM ACCOUNT_TABLE

GO

--now select from the View
SELECT ACCT_NUMBER FROM  vwACCOUNT_TABLE
ALTER TABLE ACCOUNT_TABLE ADD ACCT_NUMBER AS MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT;

열은 테이블에 지속되지 않으며 참조 할 때마다 Cly에서 재현됩니다. 보기를 사용하여 동일한 결과를 얻을 수 있습니다. 계산 된 열에서 프리미 테이트 또는 주문 필터링을 사용하고 인덱스를 추가하려면 계산 된 열에서 인덱스 생성.

글쎄, 당신은 ac 또는 동일한 일을 수행 할 사용자 정의 된 기능을 만들 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top