70-433 시험 책을 읽는 동안 나는 효과가없는 것을 생각했지만 실제로는 그렇지 않다고 생각합니다. 구절은 다음과 같이 읽습니다.
열은 또한 PERSISTED 로 표시되어야합니다. 즉, SQL Server는 계산 된 열 식의 결과를 쿼리에서 참조 할 때마다 계산하지 않고 데이터 행에 실제로 저장합니다.
이것으로부터 나는 두 가지를 이해합니다.
- 비 지속 계산 된 열은이 질의에 언급 될 때마다 계산된다
- 계산 된 열에는 아무것도 저장되지 않으므로 열에 대해 인덱스를 만들 수 없다고 가정합니다.
그것을 읽은 후, 나는 이전 프로젝트에서 비 지속 열에 인덱스를 만들었 기 때문에 이것이 조금 이상하다고 생각했습니다.
지속되지 않고 장기적으로 해로운 것에 대해 어떻게 인덱스를 만들 수 있습니까?
이를 증명하기 위해 다음 SQL 문을 실행했습니다.
CREATE TABLE testTable
(
ID INT IDENTITY(1,1) PRIMARY KEY,
telephone VARCHAR(14),
c_areaCode AS (SUBSTRING(telephone,0,5)),
cp_areaCode AS (SUBSTRING(telephone,0,5)) PERSISTED
)
INSERT INTO testTable VALUES('09823 000000');
INSERT INTO testTable VALUES('09824 000000');
INSERT INTO testTable VALUES('09825 000000');
CREATE NONCLUSTERED INDEX IX_NotPersisted ON testTable(c_areaCode);
CREATE NONCLUSTERED INDEX IX_Persisted ON testTable(cp_areaCode);
그런 다음 다음 쿼리를 실행하십시오.
DBCC FREEPROCCACHE
DBCC FREESYSTEMCACHE('ALL');
DBCC DROPCLEANBUFFERS
GO
SELECT cp_areaCode FROM testTable;
GO
SELECT c_areaCode FROM testTable;
위의 코드에 대한 쿼리 계획을 살펴본 결과 두 선택 쿼리 모두 비 지속적 인덱스를 사용하고 있음을 알 수 있습니다. 또 어떻게?

70-433 권의 책을 가진 사람들의 경우, 인용 된 텍스트는 111 페이지의 맨 위에 있습니다.
—
Stuart Blackler