source

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

manycodes 2022. 11. 25. 20:52
반응형

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

좋아요, 여기 딜레마가 있어요. 5개 정도의 테이블이 있는 데이터베이스가 있는데, 모두 똑같은 데이터 구조를 가지고 있어요.데이터는 현지화를 위해 총 450만 개의 레코드를 분할하기 위해 이 방법으로 분리됩니다.

대부분의 경우 한 테이블만 있으면 되고 모든 것이 정상입니다.단, 2개 이상의 테이블에서 데이터를 가져와 사용자 정의 열을 기준으로 정렬해야 하는 경우가 있습니다.여기가 바로 제가 문제가 있는 곳이야.

데이터 열:

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.gener 나 de_music.gener 등 where (또는 정렬)필드를 완전히 지정해야 합니다.다만, 어떤 방법으로든 결합할 경우에는, 통상, 2개의 테이블을 지정합니다.취급하는 구조를 파티션 테이블이라고 부르기도 합니다만, 일반적으로 데이터 세트를 임의로 분할하는 것이 아니라 개별 파일로 분리하는 것이 일반적입니다.데이터베이스 구조를 담당하고 있어 데이터를 분할할 정당한 이유가 없다면 국가 코드를 포함한 추가 "origin" 필드가 있는 큰 테이블을 1개 작성합니다만, 아마도 정당한 퍼포먼스상의 이유로 작성했을 것입니다.Union을 사용하여 http://dev.mysql.com/doc/refman/5.0/en/union.html에 관심이 있는 테이블에 참여하거나 Merge 데이터베이스 엔진 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

반응형