我正在尝试优化我的SQL查询,以便在一个包含10,000条记录的大型DB2表中使用。我需要从表1中提取行,其中的日期比表2中的行早。表2可以有许多最近的行,但我只关心表1的数据。我有一个查询,但它真的很慢,我希望进一步优化它。我采用了这种方法:
SELECT * FROM TABLE1 t1
WHERE t1.START_DATE < (
SELECT MAX(DATE(t2.TIMESTAMP_DATE))
FROM TABLE2 t2
WHERE t1.NAME = t2.NAME
);
下面是一个示例数据集,它在低容量下运行良好,但我的大数据集运行得太慢了。..
表1:
| 名称|开始日期|
| --------------|--------------|
| 约翰|2018-01-01 2018-01-01|
| 吉姆|2019-01-01 2019-01-01|
| 亚历克斯|2023-01-01 2023-01-01|
表2:
| 名称|时间戳_日期|
| --------------|--------------|
| 约翰| www.example.com |
| 约翰| www.example.com |
| 约翰| www.example.com |
| 吉姆| www.example.com |
| 吉姆| www.example.com |
| 亚历克斯| www.example.com |
因此,从我的查询中,我想提取以下数据集:
| 名称|开始日期|
| --------------|--------------|
| 约翰|2018-01-01 2018-01-01|
| 吉姆|2019-01-01 2019-01-01|
我可以得到任何提示来优化两个表中的大规模数据集吗?
1条答案
按热度按时间y3bcpkx11#
从T2建立一个名字和最大日期列表并加入更有效,请尝试以下操作: