【发布时间】:2020-10-19 10:53:03
【问题描述】:
我遇到了查询性能问题,不知道如何解决。
两个表都有 20k 行
table 1. prod_id, month, year, volume
1. 1 5 2020 4
2. 2 5 2020 5
...
table 2. prod_id, wh, share, month, year
1. 1 1 10% 5 2020
2. 1 2 10% 5 2020
3. 1 3 40% 5 2020
4. 1 4 40% 5 2020
...
Prod_id 类似于索引但不是主键,因为表 1 具有不同月份、年份等的重复项 我需要得到这样的表(table1 * wh = 80k 行):
table 3. prod_id, wh, month, year, new_volume
1. 1 1 5 2020 volume*share
2. 1 2 5 2020
3. 1 3 5 2020
4. 1 4 5 2020
5. 2 1 5 2020
6. 2 2 5 2020
...
我正在使用 LEFT JOIN 来执行此操作,但耗时 15 分钟以上,有什么想法可以改进此查询吗?
SELECT table1.prod_id, table2.wh, table1.month, table1.year, volume*share AS new_volume
FROM table1
LEFT JOIN table2 ON (table1.prod_id = table2.prod_id) AND (table1.month = table2.month) AND (table1.year = table2.year)
【问题讨论】:
-
您是复制 SQL 还是将其输入到问题中?上面写着table2.rpod_id,有点奇怪。
-
是的,对不起,我输入了