2009-07-31 2 views
13

webservice를 통해 내 응용 프로그램은 식별자 목록을받습니다. 이 목록을 사용하면 식별자 당 하나씩 필드를 조회해야합니다. 필드가없는 경우 값은 null이어야합니다 (표시해야 함).MySQL ID 목록을 사용하여 선택하는 가장 좋은 방법은

나는 최선의 접근 방법이 무엇인지 궁금합니다. 먼저 ID를 보유한 임시 테이블을 만든 다음 데이터를 보유한 테이블에 조인하는 것이 가장 좋다고 생각했지만 올바른 경우 임시 테이블에 ID를 삽입 할 때 식별자 당 적어도 하나의 쿼리가 필요합니다. 그런 경우에는 응용 프로그램의 식별자 목록을 반복하고 데이터베이스 1을 1 씩 쿼리 할 수있는 것 같습니다. 맞습니까? 어떤 방법을 조언 할 수 있습니까?

인사,

코엔

답변

20

사용 SELECT WHERE IN() 구문은, 다음 코드에서 반복 필요한 데이터를 설정 한 결과를 얻을 수 있습니다. 이렇게하면 DB를 한 번만 쿼리하면 필요한 정보 만 얻을 수 있습니다.

+0

+1 가장 좋은 방법 – alex

0

null을 표시하는 것이 속임수이므로 테이블 자체를 조인해야하므로 레코드 당 두 개의 인덱스 조회가 있습니다. 각 식별자에 대해 1 대 1 쿼리를 수행하면 색인 조회가 하나만 필요합니다.

두 번째 조회가 실행될 때까지 식별자가 키 캐시에 있으므로 실제로는 두 배 느려지지 않습니다.

또 다른 옵션은 입력 식별자를 사용하여 출력을 렌더링하고 이전에 제안 된 것과 같은 "IN"을 사용하는 것입니다. null 레코드는 질의 결과에 없지만 요청 된 내용을 알고 있으므로 괜찮습니다.

+0

여기서는 그가받은 항목이 표의 유일한 항목이라고 가정합니다. 하위 집합 인 경우 요청한 것보다 많은 항목으로 돌아갈 것입니다. – MyItchyChin

관련 문제