什么是派生表?

派生表(Derived Table):指的是 SQL 查询中用子查询生成的临时表,通常写在 FROM 子句中。

例如:

SELECT t.name, t.total
FROM (
SELECT name, SUM(price) AS total
FROM orders
GROUP BY name
) AS t
WHERE t.total > 100;

上面 FROM (...) AS t 就是一个 派生表

派生表物化是什么意思?

派生表物化(Derived Table Materialization) 指的是数据库在执行 SQL 查询时,会 先执行子查询(即派生表部分),并将结果 存储为临时表(物化),然后在外部查询中使用这个临时表。

换句话说:

  • “物化” = “落地为临时表”

  • 执行顺序是:先执行子查询 ➜ 临时表 ➜ 外层查询操作

派生表物化 vs 非物化

类型 执行方式说明
物化派生表 先完整执行子查询,将结果放入临时表,再进行外层查询。
非物化派生表 将子查询内联进主查询,可能重复执行,提高灵活性但代价大。

是否物化取决于:

  • 数据库的查询优化器(MySQL 8.0+ 更智能)

  • 派生表是否包含聚合、排序、LIMIT 等

  • 派生表是否被多次引用

  • 是否启用 optimizer_switch = 'derived_merge=on/off'

作者 admin

百度广告效果展示