我想从我的数据库中获取数据而不使用' left join'因为它会导致低性能(显示6000条记录需要1.16分钟)。我需要做什么命令,如左连接。
我的数据库结构
Table 1
Doccode (String) | Inv_no (String) | Inv_date (Date) |
AA0012 2122240 13.07.2014
AA0013 2122360 13.07.2014
AA0014 2122480 14.07.2014
AA0015 2122510 14.07.2014
AA0016 2122612 15.07.2014
Table 2
Inv_no (String) | close_date(date) | close_time(time) |
AA0013 22.08.2014 11:11:12
AA0015 21.08.2014 11:14:12
AA0016 04.08.2014 12:11:12
Table 3
Inv_no (String) | return_date(data) | return_by
AA0012 09.08.2014 Admin
AA0013 06.08.2014 Admin
我想得到如下所示的结果
Doccode | Inv_no | Inv_date | close_date | close_time | Return_Date
AA0012 2122240 13.07.2014 <null> <null> 09.08.2014
AA0013 2122360 13.07.2014 22.08.2014 11:11:12 06.08.2014
AA0014 2122480 14.07.2014 <null> <null> <null>
AA0015 2122510 14.07.2014 22.08.2014 11:11:12 <null>
AA0016 2122612 15.07.2014 22.08.2014 11:11:12 <null>
在这种情况下将使用左连接(我知道它),但它非常......很慢,实际数据只有6000条记录!
还有什么方法可以获得像左连接一样的结果?请帮忙
注意:我使用firebird 2.5。
答案 0 :(得分:0)
你应该用什么来获得这样的结果就是左连接。
可能有其他方法可以获得相同的结果,但左连接绝对是最快的方式。任何其他方式都会复杂得多。例如,如果你使用子查询来获取相关数据,那么数据库最多只能将其优化为与左连接相同的东西。
只有6000条记录,这样的查询会运行几毫秒。听起来你在加入的表上缺少索引。您应该至少拥有Table2.Inv_no
和Table3.Inv_no
上的索引。