게임 월드에 대한 정보를 저장하는 데이터베이스가 있습니다. 특히, 모든 다른 맵을 저장하는 테이블과 각 맵에 건물을 저장하는 테이블이 있습니다. 지도는 0-n 개의 건물을 가질 수 있고 다음과 같이 I는 정보를 저장 : (MAP_NAME) MAP_ID (PK)일대 다 관계를 효율적으로 쿼리합니다.
이 매핑
건물 (BUILDING_ID (PK), building_name, MAP_ID (FK))
내 문제는 어떻게 효율적으로 데이터베이스의지도 및 모든 건물의 이름을 얻기 위해 쿼리하는 것입니다. 예를 들어, 나는 10 개의지도와 건물을 원합니다.
SELECT * FROM maps JOIN buildings USING (map_id) limit 10
위의 쿼리는 10 행 또는 100을 반환 할 수 있지만 인해 MAP_NAME 각 대답을 반복되기 결과 테이블에서 너무 많은 중복을 가지고 오히려 낭비 보인다.
또는 map_ids를 먼저 가져온 다음 각지도에 대해 개별 쿼리를 수행 할 수 있습니다. 예를 들면 :
SELECT map_id from maps limit 10
foreach는지도 + ID : 나는 11 개 별도의 SQL 쿼리를 수행하고 있습니다로 SELECT * FROM buildings WHERE map_id = x
그러나이 다시 낭비 보인다?
요약하면 첫 번째 방법은 메모리/대역폭 비효율적 인 것으로 보이고 두 번째 방법은 CPU 비효율적 인 것으로 보입니다. 나는 옳고 더 좋은 방법이 있습니까?
나를 때려 ... lol – Malachi
OP가 답변을 얻었습니다. 그게 내가 걱정하고있는 모든 것입니다 ... LOL – Malachi
나는 map_name이 필요합니다. 나는 네가 준 것을 사용하면 두 가지 질의를 할 수 있다고 생각한다. 감사합니다 – user1633310