a라는 테이블 -- 총 row : 2천만건
b라는 테이블 -- 총 row : 4만건
a라는 테이블 사업장코드,번호는 b 테이블의 사업장코드, 번호로 FK가 걸려져있습니다.
a->b
b라는 테이블에서 데이터 1건을 삭제하는데 8분정도 걸리더라구요..
delete from b where 사업장코드='1' and 번호 = '1234'
이렇게 쿼리했을때 시간이 많이 걸려 예상실행계획을 보니
b테이블의 클러스터 인덱스 딜리트를 하고 난 후
a라는 테이블에 클러스터드 인덱스 스캔
이렇게 나오더라구요.
b 테이블의 클러스터 인덱스는 사업장코드, 번호 입니다.
느린 이유는 a라는 테이블을 한번더 확인해서 그런것같은데, 이 경우는 a라는 테이블에 저 사업장코드,번호로 따로 인덱스를 생성해줘야하는걸까요? (a테이블의 fk인 사업장코드, 번호로 따로 인덱스는 존재하지않습니다)
Comment 1
-
단순 성능이 문제라면 인덱스만 생성해 주면 문제 해결될 것 같네요.