development

MySQL-구조는 같지만 데이터가 다른 여러 테이블에서 데이터 선택

big-blog 2020. 10. 11. 10:51
반응형

MySQL-구조는 같지만 데이터가 다른 여러 테이블에서 데이터 선택


좋아, 여기 내 딜레마가있다. 정확히 동일한 데이터 구조를 가진 약 5 개의 테이블로 데이터베이스를 설정했다. 데이터는 지역화를 위해 이러한 방식으로 분리되고 총 약 450 만 개의 레코드를 분할합니다.

대부분의 경우 하나의 테이블 만 필요하며 모든 것이 정상입니다. 그러나 때로는 두 개 이상의 테이블에서 데이터가 필요하며 사용자 정의 열을 기준으로 정렬해야합니다. 여기에 문제가 있습니다.

데이터 열 :

id, band_name, song_name, album_name, genre

MySQL 문장 :

SELECT * from us_music, de_music where `genre` = 'punk'

MySQL은이 오류를 내 보냅니다.

#1052 - Column 'genre' in where clause is ambiguous

분명히 나는 ​​이것을 잘못하고 있습니다. 누구든지 나를 위해 이것에 대해 밝힐 관심이 있습니까?


나는 당신이 UNION 절을 찾고 있다고 생각합니다.

(SELECT * from us_music where `genre` = 'punk')
UNION
(SELECT * from de_music where `genre` = 'punk')

당신이 하나의 테이블로 하퍼가 될 것 같은데. 5 개는 동일한 스키마를 가지며 때로는 하나의 테이블 포인트에서 모든 것을 하나의 테이블에 넣는 것처럼 표시해야합니다.

5 개 언어를 구분하는 데 사용할 수있는 새 열을 추가합니다 (현지화 용이라고 말 했으므로 표간에 다른 언어라고 가정합니다). 450 만 개의 레코드가있는 것에 대해 걱정하지 마십시오. 모든 실제 데이터베이스는 문제없이 해당 크기를 처리 할 수 ​​있습니다. 올바른 인덱스를 추가하면 단일 테이블로 처리하는 데 문제가 없습니다.


위의 답변 중 하나라도 유효하거나 다른 방법은 데이터베이스 이름도 포함하도록 테이블 이름을 확장하는 것입니다. 예 :

SELECT * from us_music, de_music where `us_music.genre` = 'punk' AND `de_music.genre` = 'punk'

열은 두 테이블 모두에 나타나기 때문에 us_music.genre 또는 de_music.genre와 같이 where (또는 정렬) 필드를 완전히 지정해야하지만 일반적으로 두 테이블을 함께 조인하려면 두 테이블을 지정해야하기 때문에 모호합니다. 어떤 패션. 일반적으로 데이터 세트를 임의로 분할하기보다는 데이터 세트를 별개의 파일로 분리하기 위해 처리하는 구조를 분할 된 테이블이라고도합니다. 데이터베이스 구조를 담당하고 있고 데이터를 분할 할 이유가 없다면 국가 코드가 포함 된 추가 "원산지"필드가있는 하나의 큰 테이블을 만들 겠지만 합법적 인 성능상의 이유로 수행하고있을 것입니다. . http : //dev.mysql에 관심이있는 테이블을 결합하려면 공용체를 사용 하십시오.또는 병합 데이터베이스 엔진 http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html 을 사용합니다 .


두 테이블을 모두 확장하려는 원래 시도는 암시 적 JOIN을 생성합니다. 이것은 어떻게 조건과 결합 될 테이블을 분리하기 때문에 가장 숙련 된 SQL 프로그래머들에게는 눈살을 찌푸립니다.

이것은 UNION테이블에 대한 좋은 솔루션이지만 적절한 인덱싱으로 하나의 테이블에 넣을 수없는 이유가 없어야합니다. 큰 테이블에 올바른 인덱스를 추가하면 쿼리 속도가 3 배 증가하는 것을 보았습니다.


union진술은 거대한 데이터에서 거래 시간을 유발합니다. 다음 두 단계로 선택하는 것이 좋습니다.

  1. 아이디를 선택하세요
  2. 그런 다음 기본 테이블을 선택하십시오.

참고 URL : https://stackoverflow.com/questions/409705/mysql-selecting-data-from-multiple-tables-all-with-same-structure-but-differen

반응형