我在处理特定问题时会遇到问题,但我会一概而论,因为这确实是一个普遍问题。
我有(总结)下图
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>
我提出该特定问题的原因是要提供一些背景信息,而不是一个空洞的问题。但是解决特定问题不是问题。