这个问题是在一位朋友的评论之后提出的。他说,当一个查询有很多子查询时,就表明数据库存在设计缺陷,必须避免它们。他还表示,许多书籍都提出了同样的建议。
我部分同意,但我认为这些查询具有复杂的逻辑,需要大量子查询,或者为了避免子查询,查询的物化视图或大量数据冗余。
那么,子查询的真相是什么呢?必须始终避免它们吗?他们没有问题吗?它们是否表明数据库设计存在缺陷?是否有可能有一种允许复杂查询而不具有数据冗余的数据库设计?
不,子查询的存在并不一定意味着数据库模式设计不佳。
相关子查询 http://en.wikipedia.org/wiki/Correlated_subquery应谨慎使用(即当内部条件引用外部子句时)。
除此之外,子查询通常是解决问题的一种有用且自然的方式。我倾向于尽可能使用连接而不是子查询。
许多查询优化器会将某些类型的子查询转换为连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)