>데이터 베이스 >MySQL 튜토리얼 >Oracle의 ROWID와 동등한 SQL Server는 무엇입니까?

Oracle의 ROWID와 동등한 SQL Server는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-25 16:43:14596검색

What is the SQL Server Equivalent of Oracle's ROWID?

SQL Server의 Oracle RowID와 동일

Oracle의 ROWID 유사 열은 테이블의 각 행을 고유하게 식별하고 테이블의 해당 위치에 대한 정보를 포함합니다. 데이터베이스. SQL Server에서 ROWID와 가장 가까운 것은 파일, 페이지, 슬롯의 세 가지 구성 요소가 있는 제거입니다.

제거를 얻으려면 문서화되지 않고 지원되지 않는 %%physloc%% 가상 열을 사용할 수 있습니다. , 처음 4바이트에 페이지 ID, 다음 2바이트에 파일 ID, 마지막 2바이트에 슬롯 위치가 포함된 이진(8) 값을 반환합니다.

사용할 수 있습니다. sys.fn_PhysLocFormatter 또는 sys.fn_PhysLocCracker 함수는 이 이진 값을 더 읽기 쉬운 형식으로 변환합니다.

CREATE TABLE T(X INT);
INSERT INTO T VALUES(1),(2)

SELECT %%physloc%% AS [%%physloc%%],
       sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot]
FROM T

출력:

+--------------------+----------------+
|    %%physloc%%     | File:Page:Slot |
+--------------------+----------------+
| 0x2926020001000000 | (1:140841:0)   |
| 0x2926020001000100 | (1:140841:1)   |
+--------------------+----------------+

SQL Server에서는 제거를 활용하지 않습니다. 쿼리 처리이므로 WHERE 절에 %%physloc%%를 사용하면 전체 테이블이 생성됩니다. 스캔.

파일, 페이지 및 슬롯 값을 다시 바이너리(8) 표현으로 변환하려면 다음을 사용하세요.

DECLARE @FileId int = 1,
        @PageId int = 338,
        @Slot   int = 3

SELECT CAST(REVERSE(CAST(@PageId AS BINARY(4))) AS BINARY(4)) +
       CAST(REVERSE(CAST(@FileId AS BINARY(2))) AS BINARY(2)) +
       CAST(REVERSE(CAST(@Slot   AS BINARY(2))) AS BINARY(2))

위 내용은 Oracle의 ROWID와 동등한 SQL Server는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.