>데이터 베이스 >MySQL 튜토리얼 >서로 다른 데이터베이스 서버에서 테이블을 효율적으로 조인하는 방법은 무엇입니까?

서로 다른 데이터베이스 서버에서 테이블을 효율적으로 조인하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-13 10:57:43686검색

How to Efficiently Join Tables Across Different Database Servers?

다양한 서버 데이터베이스의 테이블 조인

서로 다른 서버에 있는 서로 다른 데이터베이스의 여러 테이블에서 데이터를 검색할 때 이러한 테이블을 효율적으로 조인하는 방법에는 여러 가지가 있습니다.

1. 서버링크 이용하기

sp_addlinkedserver 명령을 통해 서버 링크를 생성하여 데이터베이스 간의 연결을 설정합니다. 예제와 같이 연결된 서버 이름 앞에 데이터베이스 이름을 붙여 평소와 같이 쿼리를 통해 액세스합니다.

<code class="language-sql">-- 来自 DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID</code>

2. OPENQUERY를 사용하세요

또는 OPENQUERY을 사용하여 원격 SQL 문을 실행하고 다른 서버에서 데이터를 검색하는 것도 고려해 보세요. 이 방법은 대역폭을 최적화하고 원격 서버의 쿼리를 최적화합니다. 다음 예와 같이 나중에 연결하기 위해 데이터를 임시 또는 메모리 내 테이블에 캐시할 수 있습니다.

<code class="language-sql">-- 从其他数据库服务器获取数据
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')

-- 现在我可以连接我的临时表以查看数据
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID</code>

메모

Server Link와 OPENQUERY 사이의 선택은 특정 사용 사례와 성능 요구 사항에 따라 다릅니다. 서버 링크는 영구적인 연결을 제공하는 반면 OPENQUERY은 임시 데이터 검색을 허용합니다. 필터링이 필요한 시나리오의 경우 OPENQUERY가 더 효율적일 수 있습니다. 더 많은 예제와 시나리오는 설명서를 참조하세요.

위 내용은 서로 다른 데이터베이스 서버에서 테이블을 효율적으로 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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