【发布时间】:2017-07-12 09:05:38
【问题描述】:
我正在尝试构建一个查询,该查询将从一个表中提取所有列,并从另一个相关表中添加一些计数,使用左连接从该表中查找与初始表中的每一列相关的项目。
到目前为止,我有这个:
SELECT table1.*,
count(table2_c1.ID) as column1_count,
count(table2_c2.ID) as column2_count
from table1
left join (select * from table2
where table2.COLUMN_1 = 1) as table2_c1
on table1.ID = table2_c1.TABLE1_ID
left join (select * from table2
where table2.COLUMN_2 = 1) as table2_c2
on table1.ID = table2_c2.TABLE1_ID
group by table1.ID
having ANOTHER_COLUMN = 1;
但这需要大约 5 秒的时间来执行,而且我还没有添加接近最终语句将包含的计数数量。有没有更好的方法来做到这一点?对于这个问题的解释如此糟糕,我深表歉意,我对 SQL 很陌生。
【问题讨论】:
-
[讽刺] 相当大的数据集和每张表几千行在同一句话中并不严重。 [/sarcasm] 欢迎来到 SO 得到这样的性能问题的答案,最好显示你的表(包括索引)的 DDL,以及执行计划
-
@ThomasG heh,从问题中删除了该声明。不幸的是,由于表格中包含敏感数据,我无法真正分享有关表格的太多信息。