sql - 子查询是邪恶的吗?

标签 sql subquery

这个问题是在 friend 的评论之后提出的。他说,当一个查询有很多子查询时,这是数据库存在设计缺陷的信号,必须避免。他还说,很多书都提出了同样的建议。

我部分同意,但我认为这些查询具有复杂的逻辑,需要大量子查询,或者,为了避免子查询,查询的物化 View 或大量数据冗余。

那么,关于子查询的真相是什么?必须始终避免它们吗?他们没有问题吗?它们是否表明数据库设计缺陷?是否有可能有一个数据库设计允许复杂查询而没有数据冗余?

最佳答案

不,子查询的存在并不一定意味着数据库模式设计不佳。

Correlated subqueries应该谨慎使用(即当内部条件指的是外部子句时)。

除此之外,子查询通常是解决问题的有用且自然的方法。我倾向于在可能的情况下使用连接而不是子查询。

许多查询优化器会将某些类型的子查询转换为连接。

关于sql - 子查询是邪恶的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8276178/

相关文章:

mysql - COUNT FUNCTION where 子句

sql - 从一个数据组创建 N 个数组的函数

mysql - INSERT ... ON DUPLICATE KEY(什么都不做)

mysql - Laravel 5,加入两个单独的查询调用?

mysql - Conditional INNER JOIN or LEFT JOIN 基于连接条件

sql - 'IN' 子句的奇怪行为有效

node.js - NodeJs 与 Mongoose - 嵌套查询异步问题

MySQL子查询本身返回所有记录

php - 带有 LIMIT 别名的 SQL SUM 返回 "undefined index"

select - (黑斑羚)分析异常 : Subqueries are not supported in the select list