programing

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

nasanasas 2020. 9. 14. 21:14
반응형

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

해당 CONNECTION에서만 볼 수있는 테이블을 생성합니다. 다른 연결을 생성 한 동일한 사용자는 다른 연결에서 #t 테이블을 볼 수 없습니다.

CREATE TABLE ##t

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


고유 한 전역 임시 테이블이 필요한 경우 Uniqueidentifier Prefix / Suffix를 사용하여 고유 한 테이블을 만들고 if object_id (.... 인 경우 사후 실행을 삭제합니다. 유일한 단점은 Dynamic sql을 사용하고 명시 적으로 삭제해야하는 것입니다.

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

반응형