t-sql의 일반 테이블에서 삭제에 대한 성능 조정을 보았습니다.테이블 변수에서 삭제 성능 향상
하지만 수행 할 테이블 변수의 삭제시 성능 조정이 있습니까? UserExclusionsEvaluate 실제로 CTE 그대로 줄거리, 두꺼운 도착, 그러나 나는 시도하고 (가능한 경우) 먼저 테이블 변수 주위를 최적화하는거야 :
편집
다음은 예입니다. CTE 자체는 매우 빠르게 실행됩니다. 느린 삭제 만. 그것은 현재의 화신 년대에
DELETE FROM @UsersCriteria
FROM @UsersCriteria UsersCriteria
WHERE UserId IN (SELECT UserID FROM UserExclusionsEvaluate WHERE PushRuleExclusionMet = 1)
, @UsersCriteria은 다음과 같습니다
DECLARE @UsersCriteria TABLE
(
UserId int primary key,
PushRuleUserCriteriaType int
)
나는 비 차 등 @UsersCriteria을 시도 클러스터되지 않은 클러스터 실험했습니다.
IN에 문제가있는 것 같습니다. 하위 쿼리에서도 JOIN을 시도했습니다.
편집 :
좋은 소식! 연속 된 CTE로 suquery를 옮기는 것, 테이블 힌트를 시도하는 것 등을 포함한 SQL을 많이 사용한 후에.
테이블 변수에서 임시 테이블로 간단히 변경하면 성능이 크게 향상되었습니다.
정말로 흥미 롭습니다. 삭제가 자체적으로 잘 돌아 갔으므로 (CTE의 경우) 하위 항목이 잘 작동했습니다. 그러나 둘을 섞어서 메가 느리게 움직였다.
하위 쿼리에서 CTE를 사용할 때 최적화 프로그램을 시작할 수 없다고 생각합니까? 어쩌면 삭제와 혼합했을 때.
PushRuleExclusionMet에 대한 색인이 생성되어 있습니까 (사용자 ID가 클러스터 된 것으로 가정) – gbn
안녕하세요. 감사합니다. 감사합니다. PushRuleExclusionMet가 CTE에 있습니까? CTE의 열을 색인화 할 수 있습니까? –
죄송합니다, 그 비트를 놓친 – gbn