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
'programing' 카테고리의 다른 글
NuGet: 'X'에 'Y'에 대해 이미 정의된 종속성이 있습니다. (0) | 2023.05.10 |
---|---|
아이폰 5 화면 해상도를 위한 앱을 개발하거나 마이그레이션하는 방법은 무엇입니까? (0) | 2023.05.10 |
Microsoft용 NuGet 패키지는 어디에 있습니까?Windows Azure.서비스 런타임? (0) | 2023.05.10 |
Linux bash에서 타일의 의미(홈 디렉토리가 아님) (0) | 2023.05.10 |
셀이 텍스트 문자열로 시작하는 경우...공식 (0) | 2023.05.10 |