안녕하세요 초보개발자입니다.
SQL SERVER 2012를 사용하고 있는데,
테이블 A에 대해서
DATETIME이 아닌 VARCHAR(8) 날짜 컬럼 X가 있습니다.
외부에서 자동으로 링크되어 들어오는 데이터라
날짜 규칙에 어긋나거나 날짜가 아닌 데이터가 들어오기도 합니다.
그래서 이 테이블 자료를 가져올때는
날짜규칙에 맞는 X의 ROW 데이터만 가져오게 되어있는데요.
데이터 건수가 많아서 조회에 시간이 많이 소요됩니다 ㅠㅠ
SELECT ...
FROM A
WHERE ISDATE(X)='1'
INDEX 가 먹지않더라구요 ㅠㅠ
쿼리속도 개선을 위한 ISDATE 함수를 대체할 방법이 없을까요?
쿼리 구문에서 컬럼에 함수 및 어떠한 연산이 포함된 경우에는 인덱스를 사용할 수 없습니다.
값이 결정적인 경우 계산된 컬럼을 사용하면, 계산된 컬럼에 인덱스를 걸 수 있는데
ISDATE(() 함수의 경우 비결정함수라 계산컬럼을 사용해도 안 될 것 같습니다.
제 생각에는 별도의 컬럼을 추가 및 인덱스 생성하고, 트리거에서 컬럼을 ISDATE()로 update 시키고
조회 쿼리는 추가한 컬럼이 1 인지를 비교하는 것으로 변경 하는 것이 어떨까 합니다.