2009-05-03 6 views
0

데이터베이스 A, 테이블 A (AA)의 쿼리에 사용자 ID 배열이 있습니다.로그인이 다른 데이터베이스에서 관련 데이터를 검색 할 때 제안 사항이 있습니까?

나는 주 사용자 데이터베이스를 데이터베이스 B, 표 A (BA)에 가지고 있습니다.

내 결과 배열에서 AA로부터 반환 된 각 사용자 ID에 대해 BA로부터 해당 사용자 ID의 이름과 성을 검색하려고합니다.

다른 사용자 계정이 각 데이터베이스를 제어합니다. 불행히도 각 로그인은 각 데이터베이스에 대한 권한을 가질 수 없습니다.

질문 : 최소의 쿼리 및/또는 처리 시간으로 어떻게 처음과 마지막을 검색 할 수 있습니까? 배열에 20 명의 사용자가 있습니까? 어레이에 20,000 명의 사용자가 있습니까? 해당되는 경우 모든 주문의 크기가 더 큽니까? 단지 데이터베이스 간 조인을 사용하는 동안에는 데이터베이스가 같은 서버에 같은 PHP 5/MySQL은 5

+0

예를 들어에 대한 액세스 권한이있는 다른 db 계정의 _possibility_조차도 없습니다. 두 테이블을 결합한 뷰? – VolkerK

답변

2

를 사용

. 데이터에 액세스하는 데 사용되는 DB 로그인에는 두 데이터베이스 모두에 대한 사용 권한이 필요합니다. 의견에 응답

SELECT AA.userID, BA.first, BA.last 
FROM databasename.schema.table AA 
INNER JOIN databasename.schema.table BA ON AA.userID = BA.userID 

: 같은 뭔가

내가 미안 해요, 제대로 다중 로그인에 대한 부분을 읽을 생각하지 않는다. 한 연결에서 두 가지 다른 mySQL 로그인을 사용할 수 없습니다. 여러 쿼리를 수행해야하는 경우 실제로는 세 가지 옵션 만 있습니다. A) 첫 번째 결과 집합을 반복하고 여러 쿼리를 실행합니다. B) WHERE 절을 userID IN (@firstResultSet)과 함께 사용하고 첫 번째 결과 집합을 전달하는 쿼리를 실행합니다. C) 두 번째 DB에서 모든 것을 선택하고 코드에 참여시킵니다.

이 세 가지 옵션 모두가 좋지 않으므로 두 DB 중 하나에서 사용자 권한을 변경할 수없는 이유는 무엇입니까? 또한 20,000 명의 사용자 이름과 ID를 선택해야하는 이유는 무엇입니까? 이것이 어떤 종류의 데이터 덤프가 아니라면, 사용하기 쉽고 쿼리 집약도가 적은 데이터를 표시하는 다른 방법을 찾고있을 것입니다.

모두 당신이 선택하는 옵션은 다양한 상황에 따라 결정됩니다. 레코드 수가 적 으면 1,000 이하에서 옵션 B를 사용합니다. 레코드 수가 많을수록 옵션 C를 사용하고 조인 할 수있는 두 개의 결과 세트 (예 : array_combine 사용)에 배치하려고합니다.

+0

불행히도 각 로그인은 각 데이터베이스에 대한 권한을 가질 수 없습니다. : – Ian

+0

하지만 두 개의 로그인, 각각 하나씩 각 데이터베이스에 두 개의 연결을 가질 수 있으며 액세스 할 수 있습니다. – dkretz

+0

어떻게 PHP에서 할 것이라고? 나는 두 개의 핸들을 사용할 준비가 $ db_A 및 $ db_B. mysql_query()에 어디에 넣어 두겠습니까? – Ian

0

여기서 중요한 것은 두 데이터베이스 호출에서 가능해야한다는 것입니다.

데이터베이스 A로부터 아이디의 내가 MySQL은 모르지만, SQLSERVER에서 내가하는 XML 데이터 유형을 사용하고 모두 통과 것

데이터베이스 B.에게 전달하는 두 번째를 얻을 수있는 첫 번째 하나를 해당 ID를 사용하여 문장으로. xml 데이터 유형 전에 IN 문에 ID가있는 일부 동적 SQL을 구축했습니다.

SELECT 사용자 아이디 DatabaseA.TableA

루프 이드 년대 통해 쉼표로 구분 된 문자열을 구축 할 수 있습니다.

는 "(+ stringId +") "

이의 문제는 20,000 아이디의 WTH 당신은 데이터의 양에 몇 가지 성능 문제가있을 수 있다는 것이다 사용자 아이디 IN이 FIRSTNAME, DataBaseB.TableA FROM 성 선택" 배상.이것은 어디에서 XML 데이터 유형을 사용할 것인가? 그래서 mysql이 ID 목록을 전달하기 위해 어떤 대안을 사용하는지 살펴 보자.