Declare @Id int
Set @Id = 1
While(@Id <= 10000)
Begin
Insert into tblProducts values('Product - ' + CAST(@Id as nvarchar(20)),
'Product - ' + CAST(@Id as nvarchar(20)) + ' Description')
Print @Id
Set @Id = @Id + 1
End
캐쉬값 지우기
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS; -- CLEARS QUERY CACHE
GO
DBCC FREEPROCCACHE; -- CLEARS EXECUTION PLAN CACHE
GO
테이블에 랜덤한 대량의 데이터를 넣고 그것을 불러오는 실험을 했을 때 JOIN과 SUB Query가 큰 차이가 없었지만 조금씩 join이 더 빨랐다.
존재 여부를 확인할 때에는 JOIN이 더 빠르다. 그렇지 않으면 각 외부 쿼리의 결과에 대해 중첩 쿼리가 처리하게 된다. 이러한 경우 조인 방식이 더 낫다.
According to MSDN, in some cases where existence must be checked, a join produces better performance. Otherwise, the nested query must be processed for each result of the outer query. In such cases, a join approach would yield better results.
일반적으로 JOIN이 SUB QUERY보다 빠르게 작동하지만 SQL Server에서는 실행 계획을 어떻게 세우나에 따르는 경우가 더 많다.
In general joins work faster than sub-queries, but in reality it all depends on the execution plan that is generated by SQL Server. Id does not matter how we have written the query, SQL Server will always transform it on an execution plan. If it is "smart" enought to generate the same plan from both queries, you will get the same result.
'Database > SQL Server' 카테고리의 다른 글
SQL Server - 재사용 가능한 스크립트 Re-runnable sql server script (0) | 2020.12.10 |
---|---|
SQL Server - 모든 테이블의 리스트 T-SQL query (0) | 2020.12.10 |
SQL Server - 서브 쿼리 Subqueries, 상관 서브 쿼리 Correlated sub query (0) | 2020.12.09 |
SQL Server - 트랜잭션 (Transaction) (0) | 2020.12.09 |
SQL Server - 에러 처리 Error handling(@@ERROR, TRY...CATCH) (0) | 2020.12.09 |