我有 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