首先,英语不是我的第一语言,请随时编辑我的问题,对于任何可能冒犯您的错误或没有如此清楚地暴露问题,我深表歉意。
我有一些带有很多连接的 sql 查询,这些连接基于聚集索引(不用担心)。一些连接仅用于尊重规范化,因为对维护很直观,但有时可以跳过其中的一些。就最佳实践而言,我不清楚如何处理这些连接。
编辑:
一个简单的例子:
select *
from things
join things_categories on
things_categories.id_thing = things.id_thing
join categories on
categories.id_category = things_categories.id_category
join categories_properties on
categories_properties.id_category = categories.id_category
where
categories_properties.bo_default = 1
但可以这样做:
select *
from things
join things_categories on
things_categories.id_thing = things.id_thing
join categories_properties on
categories_properties.id_category = things_categories.id_category
where
categories_properties.bo_default = 1
第二个连接不是必需的(我在数据库级别确实具有完整性),它的存在只是因为使代码更直观并尊重数据库规范化。我不确定我是否应该遵循尽可能最小和有效的路径,或者留下不必要的连接以尊重规范化并使代码更直观。
有小费吗?
祝一切顺利。