我正在研究 MySql 数据库。我需要将多个(超过 10 个)表中的信息合并到一个表中。为了做到这一点,我遵循典型的加入风格。
Select * from
table_1
Join table_2
on(table_1.id = table_2.id)
Join table_3
on(table_1.id = table_3.id)
它有效,但我在执行期间遭受了很多痛苦。还有其他优化我的代码的好方法吗?以下是我的代码示例:
SELECT
distinct
u.Id,
oc.dt,
Daily_Number_Outgoing_Calls,
Daily_Number_Incoming_Calls,
Daily_duration_Outgoing_Calls
FROM
creditfix.users u
JOIN
#1 Daily_No_Out_Calls
(
SELECT
cl.uId,SUBSTRING(DATE,1,10) as dt,
count(1) as Daily_Number_Outgoing_Calls
From creditfix.call_logs as cl
WHERE
cl.`type`=2 #out going calls only
GROUP by cl.uId,dt
) oc
ON (u.Id=oc.Uid)
#2 Daily_No_In_Calls
JOIN
(
SELECT
cl.uId, SUBSTRING(DATE,1,10) as dt,
count(1) as Daily_Number_Incoming_Calls
From creditfix.call_logs as cl
WHERE
cl.`type`=1 #incoming calls only
GROUP by cl.uId,dt
) ic
ON (u.Id=ic.Uid)
#3 Daily_duration_Out_Calls
JOIN
(
SELECT
cl.uId,SUBSTRING(DATE,1,10) as dt,
(sum(duration)) as Daily_duration_Outgoing_Calls
From creditfix.call_logs as cl
WHERE
cl.`type`=2 #out going calls only
GROUP by cl.uId,dt
) od
ON (u.Id=od.uid)
# It goes on like this...