Database/SQL Server

SQL Server - 무작위 데이터로 큰 테이블 만들기 Creating a large table with random data

청렴결백한 만능 재주꾼 2020. 12. 9. 07:05
반응형
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.

반응형