programing

SQL Server 테이블: @, # 및 ##의 차이점은 무엇입니까?

telecom 2023. 5. 10. 20:15
반응형

SQL Server 테이블: @, # 및 ##의 차이점은 무엇입니까?

SQL Server에서 @ 테이블, # 테이블 및 ## 테이블의 차이점은 무엇입니까?

#table로컬 임시 테이블(생성한 사용자만 해당)을 참조합니다.

##table전역(모든 사용자에게 적용됨) 임시 테이블을 나타냅니다.

@variableName유형에 따라 값을 유지할 수 있는 변수를 말합니다.

보다

#그리고.##테이블은 임시 데이터베이스에 표시된 실제 테이블입니다.이러한 테이블에는 인덱스와 통계가 있을 수 있으며 세션의 sproc에서 액세스할 수 있습니다(글로벌 임시 테이블의 경우 세션 간에 사용 가능).

@table은 테이블 변수입니다.

자세한 내용: http://www.sqlteam.com/article/temporary-tables

저는 #table과 @table의 차이점에 초점을 맞출 것입니다.##table은 글로벌 임시 테이블이며 SQL Server를 사용한 지 10년이 넘었지만 아직 유효한 사용 사례를 찾지 못했습니다.일부는 존재하지만 객체의 특성상 IMHO를 매우 사용할 수 없습니다.

@marc_s에 의한 @whiner에 대한 응답은 전적으로 사실입니다. 테이블 변수는 항상 메모리에 존재한다는 일반적인 신화입니다.테이블 변수가 디스크로 이동하여 임시 테이블처럼 작동하는 것은 실제로 매우 일반적입니다.

어쨌든 저는 @Astander가 지적한 링크를 따라 차이점들의 집합을 읽어볼 것을 제안합니다.대부분의 차이는 @table 변수로 수행할 수 없는 작업에 대한 제한을 포함합니다.

CREATE TABLE #t

해당 연결에서만 볼 수 있는 테이블을 만들고 다른 연결을 만드는 동일한 사용자는 다른 연결에서 테이블 #t를 볼 수 없습니다.

CREATE TABLE ##t

다른 연결에 표시되는 임시 테이블을 만듭니다.그러나 작성 연결이 종료되면 테이블이 삭제됩니다.

고유한 글로벌 임시 테이블이 필요한 경우 고유 식별자 접두사/서픽스를 사용하여 고유한 테이블을 만들고 if object_id(...)인 경우 사후 실행을 중지합니다.유일한 단점은 동적 SQL을 사용한다는 것이며 명시적으로 삭제해야 합니다.

언급URL : https://stackoverflow.com/questions/2219714/sql-server-tables-what-is-the-difference-between-and

반응형