> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 RowID와 유사한 정보를 검색하는 방법은 무엇입니까?

SQL Server에서 RowID와 유사한 정보를 검색하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-03 12:28:48
원래의
381명이 탐색했습니다.

How to Retrieve RowID-Like Information in SQL Server?

SQL Server에서 RowID와 유사한 정보 검색

Oracle과 SQL Server의 주요 차이점 중 하나는 오라클의 RowID 개념. 그러나 주로 문서화되지 않고 지원되지 않는 %%physloc%% 가상 열을 통해 SQL Server에서 유사한 정보를 얻을 수 있는 방법이 있습니다.

%%physloc%% 이해

%%physloc%% 가상 열은 다음을 나타내는 이진(8) 값을 반환합니다. 정보:

  • 페이지 ID(처음 4바이트)
  • 파일 ID(다음 2바이트)
  • 페이지의 슬롯 위치(마지막 2바이트)

이진 값을 사람이 읽을 수 있는 값으로 변환 양식

SQL Server는 %%physloc%% 이진 값을 더 읽기 쉬운 형식으로 변환하는 데 유용한 두 가지 기능을 제공합니다.

  • sys.fn_PhysLocFormatter: 이진 값을 "파일:페이지:슬롯"으로 변환합니다. format.
  • sys.fn_PhysLocCracker: 바이너리 값을 별도의 파일 ID, 페이지 ID 및 슬롯 변수로 변환합니다.

사용 예

%%physloc%%의 사용을 시연하려면 다음을 고려하세요. 쿼리:

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)   |
+--------------------+----------------+
로그인 후 복사

변환 되돌리기

변환 프로세스를 되돌리고 이진(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))
로그인 후 복사

이 기능은 유용하지만 SQL Server의 쿼리 최적화 프로세스에 직접적인 영향을 미치지 않습니다.

위 내용은 SQL Server에서 RowID와 유사한 정보를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿