약 80 개의 열이있는 테이블 "BigTable"이 있지만 업데이트 도중에 사용하게 될 "순위"열을 생성해야합니다. 지금 내 쿼리는 다음과 같습니다.조인 테이블의 열 개수가 중요하거나 성능에 영향을 줍니까?
UPDATE bt
SET bt.UpdateColumn = CASE WHEN (SomeCondition >= bt.RankField)
THEN bt.UpdateColumn + 0.01
ELSE bt.UpdateColumn
END
FROM (SELECT bt.*,RANK() OVER (PARTITION BY Col1 ORDER BY Col2) AS RankField FROM BigTable bt) bt
INNER JOIN AnotherTable atbl
ON bt.Col1 = atbl.Col2
내 코드를 이와 같이 변경하면 좋을까요? 파생 테이블의 열 개수가 조인 중에 중요합니까?
UPDATE bt
SET bt.UpdateColumn = CASE WHEN (SomeCondition >= bt.RankField)
THEN bt.UpdateColumn + 0.01
ELSE bt.UpdateColumn
END
FROM (SELECT bt.Col1,RANK() OVER (PARTITION BY Col1 ORDER BY Col2) AS RankField FROM BigTable bt) bt
INNER JOIN AnotherTable atbl
ON bt.Col1 = atbl.Col2
성능 문제가 걱정되면 인덱스 추가가 도움이되는지 테스트하십시오. 인덱싱 된 필드에 가입하면 성능이 크게 향상됩니다. 당신이 참여하는 테이블의 수를 늘리면 필연적으로 검색 결과가 느려지 게됩니다. 이것이 바로 i.m.o입니다. 조인과 테이블 인덱스를 항상 최적화해야합니다. –