同じテーブルを持つ8つのデータベースがあります
db0
tbluser | id | name
db1
tbluser | id | name
db2
tbluser
db3
tbluser | id | name
db4
tbluser | id | name
db5
tbluser | id | name
db6
tbluser | id | name
db7
tbluser | id | name
another table dbcommon
ユーザーメッセージが保存された場所があります
dbcommon
message | id | sender_id | recipient_id
私の問題は、送信者 ID と受信者 ID に基づいて、ユーザー名を含むすべてのメッセージを照会する必要があることです。
mysqlでこれを行う最良の方法は何ですか?
私のアプローチは、ユニオンを使用してすべてのdb1からdb7のユーザーデータを結合し、dbcommonのメッセージに内部結合することですが、それが問題ないかどうかはわかりません。ユーザーテーブルの選択に何百万ものデータがあり、ユニオンが問題になる場合.
私の質問をよりよく理解するために。作ったけど使わない。
select *, sender.nickname as sender_name, recipient.nickname as recipient_name
from dbcommon.message m
inner join
(
select * from db0.tbluser
union
select * from db1.tbluser
union
select * from db2.tbluser
union
select * from db3.tbluser
union
select * from db4.tbluser
union
select * from db5.tbluser
union
select * from db6.tbluser
union
select * from db7.tbluser
) as sender on m.sender_id = sender.id
inner join
(
select * from db0.tbluser
union
select * from db1.tbluser
union
select * from db2.tbluser
union
select * from db3.tbluser
union
select * from db4.tbluser
union
select * from db5.tbluser
union
select * from db6.tbluser
union
select * from db7.tbluser
) as recipient on m.recipient_id = recipient.id