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
'programing' 카테고리의 다른 글
준비된 파일의 Git 목록 (0) | 2020.09.14 |
---|---|
프라 미스를 사용할 때 클래스 메서드 내에서 'this'가 정의되지 않은 이유는 무엇입니까? (0) | 2020.09.14 |
`if key in dict` vs.`try / except`-어느 것이 더 읽기 쉬운 관용구입니까? (0) | 2020.09.14 |
Info.plist에서 버전 읽기 (0) | 2020.09.13 |
: not (: empty) CSS 선택기가 작동하지 않습니까? (0) | 2020.09.13 |