在SQL中对同一张表进行两次JOIN操作,性能问题

时间:2019-07-12 17:37:32

标签: sql join relation

我在处理特定问题时会遇到问题,但我会一概而论,因为这确实是一个普遍问题。

我有(总结)下图

Main_Table                            Doctors
--------------                        ---------------
PK ID                                 PK ID_Doctor
   ID_Prescribing_Doctor                 Name
   ID_Performer_Doctor

然后,在查询中,我必须与Doctors联接Main_Table,以便在每行中同时显示姓名(来自Prescribing和Performers医生)。

所以:

SELECT MT.ID, PRES_DOC.Name, PERF_DOC.Name
FROM [SCHEME].Main_Table as MT
LEFT JOIN [SCHEME].Doctors AS PRES_DOC ON MT.ID_Prescribing_Doctor = 
                                          PRES_DOC.ID_Doctor
LEFT JOIN [SCHEME].Doctors AS PERF_DOCON MT.ID_Prescribing_Doctor = 
                                         PERF_DOC.ID_Doctor

查询工作正常。我正在检索我想要的所有数据。 但是,存在执行问题。

Main_Table表具有(大部分)10.000.000行。 Doctors表(最多)有20.000行。

执行JOIN时需要花费时间。

我还尝试使用以下字段创建视图:

ID_Prescriber | Name_Prescriber | ID_Performer | Name_Performer

并加入一个。

但是,考虑到表有近20000,该视图将检索近4000亿行。因此性能会变差。

我想知道是否有一种方法可以实现而无需在同一张表中创建两个JOINS。

在其他问题上,我读到的所有答案都是关于建立两个JOIN的。

更多信息

考虑到给出的答案,恐怕我没有清楚地说明自己。该线程的目的不是要查找特定问题的解决方案,而是要了解某些情况下(例如上面提出的方案)的新闻替代解决方案,在这种情况下,您必须为同一张表创建两个联接。

总结一下,我想知道是否还有另一种方法来解决这类问题,只是为了提供一系列解决方案,然后根据具体情况应用最佳解决方案。 < / p>

我提出该特定问题的原因是要提供一些背景信息,而不是一个空洞的问题。但是解决特定问题不是问题。

0 个答案:

没有答案