这个问题是在 friend 的评论之后提出的。他说,当一个查询有很多子查询时,这是数据库存在设计缺陷的信号,必须避免。他还说,很多书都提出了同样的建议。
我部分同意,但我认为这些查询具有复杂的逻辑,需要大量子查询,或者,为了避免子查询,查询的物化 View 或大量数据冗余。
那么,关于子查询的真相是什么?必须始终避免它们吗?他们没有问题吗?它们是否表明数据库设计缺陷?是否有可能有一个数据库设计允许复杂查询而没有数据冗余?
最佳答案
不,子查询的存在并不一定意味着数据库模式设计不佳。
Correlated subqueries应该谨慎使用(即当内部条件指的是外部子句时)。
除此之外,子查询通常是解决问题的有用且自然的方法。我倾向于在可能的情况下使用连接而不是子查询。
许多查询优化器会将某些类型的子查询转换为连接。
关于sql - 子查询是邪恶的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8276178/