我有一个很大的疑问。
性能一直是可以接受的,但我现在遇到了这个问题。
我需要多次加入一个表,当然使用别名,但这样做会导致巨大的性能损失。
这是一个巨大的查询,所以我不会全部发布,但要点是:
SELECT table1.name,
ALIAS1.CODE AS "Sequence"
...
FROM table1
...
LEFT JOIN table2 ALIAS1
ON ALIAS1.COLUMN1 = table1.key1
AND ALIAS1.COLUMN2 = 'aaba'
AND ALIAS1.COLUMN3 = '00001'
...
这个很好,运行大约 90 秒。但是,如果我再次添加相同的表,如下所示,执行时间会成倍增加(到目前为止 2 小时并且仍在运行):
SELECT table1.name,
ALIAS1.CODE AS "Sequence",
ALIAS2.CODE AS "Rating"
...
FROM table1
...
LEFT JOIN table2 ALIAS1
ON ALIAS1.COLUMN1 = table1.key1
AND ALIAS1.COLUMN2 = 'aaba'
AND ALIAS1.COLUMN3 = '00001'
LEFT JOIN table2 ALIAS2
ON ALIAS2.COLUMN1 = table1.key1
AND ALIAS2.COLUMN2 = 'ffhr'
AND ALIAS2.COLUMN3 = '00107'
我需要知道的是,什么因素可能导致这种情况?
在我看来,索引应该没问题,否则第一次加入将是一个问题。
为什么第二次加入会成为这样的问题?
我实际上需要第三次加入同一张桌子,但显然这是不行的!