2011-12-21 65 views
0

我有一个业务表,并且有50个外键列引用了其他主数据表。 去取我的所有查询必须参加所有50个参考表像选择查询中的连接数

select ct.id , ct.name , ct.description , st.value , pr.value , sv.value , .... 
from 
core_table ct 
left outer join domain_value st on ct.status_fk = st.id 
left outer join domain_value pr on ct.priority_fk = pr.id 
left outer join domain_value svon ct.severity_fk = sv.id 
....... 
....... 

所以这样我需要50左外连接的数据。 是否有权利做50个这样的左外连接,或者我们是否有其他优化方式来实现这一目标?

+0

我会问为什么你在一个表中有50个外键列,这是一个规范化问题吗? – Coops 2011-12-21 10:58:04

+0

这里它的记录类似于50个主数据。所以我选择保留在同一张表中。这就是要求。 – ashok 2011-12-21 14:44:39

回答

0

Is too many Left Joins a code smell?

这对某些设计一个完全合法的解决方案。

+0

感谢“CodeBlend”的回复..所以你说50到100左右的连接完全可以吗?我看到这个表可以扩展到最多100个参考字段不超过。所以是100左外连接也不会导致任何性能问题?基本上根据这种理解,只有我可以继续我的设计! – ashok 2011-12-21 14:05:31