테이블에 직접 삽입하는 것과 테이블을 가리키는 다른 데이터베이스의 뷰에 삽입하는 것 사이의 성능 차이를 테스트하려고했습니다. 나는 단순한 테이블에 10,000 개의 삽입물이있는 WHILE 루프가 3 초 걸렸지 만보기에는 30 초가 걸렸습니다.연결 간의 큰 성능 차이
내가 조사한 것처럼 SSMS에서 창을 전환하면 뷰 성능이 테이블의 뷰 성능과 동일하다는 것을 알았습니다. 그런 다음 뷰 창에서 DB를 테이블 DB로 전환하고 거기에 삽입하면 테이블에 직접 갈 때 속도가 느려집니다.
이것은 연결에 약간의 차이가 있다는 아이디어를 지적했습니다. 이것들은 SSMS에서 다른 탭이었고, 하나는 -N과 함께 만들어졌습니다. SET NOCOUNT ON (두 창에서) 및 모든 통계, 쿼리 계획 등을 제외한 모든 SET 명령을 해제하지 않았습니다.
SQL 프로필러를 실행하여 연결을 살펴본 결과 동일한 설정이었습니다. 그러나 성능 차이는 100 % 일관되었습니다.
어느 연결에서 트랜잭션이 열려 있지 않은지 확인했습니다.
SSMS의 다른 인스턴스를 열어 보았는데 느린 성능을 복제 할 수 없습니다 (SSMS의 첫 번째 인스턴스에서 내 탭 중 3 개에서 2 개가 발생하지만).
이것은 모두 로컬 서버에 있습니다. 약 1 시간 만에 시스템을 종료해야 할 필요가 있습니다.이 문제를 재현 할 수 있을지 모르겠으므로 그 전에 몇 가지 제안을 얻을 수 있습니다.
차이점에 대한 다른 아이디어 있다?
SQL Server가 시간 차이를 어떻게 계산합니까? 실제 실행 계획을 포함하여 차이가 있는지 확인하고 SET STATISTICS IO 및 SET STATISTICS TIME 결과를 확인해 보았습니까? –
빠른 설명 : 복제가 어렵거나 불가능한 경우 다른 생각을하지 않을 것입니다. – NotMe
보기에 데이터베이스에 대상이 삽입되기 전에 동일한 데이터베이스의 다른 테이블에 대해 추가 쿼리가 발생하는 것이 있습니까? – Nate