作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用这种语法有什么好处:
WITH
cte1 AS (SELECT a, b FROM table1),
cte2 AS (SELECT c, d FROM table2)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;
相反:
SELECT b, d
FROM (SELECT a, b FROM table1) AS cte1
JOIN (SELECT c, d FROM table2) AS cte2
WHERE cte1.a = cte2.c;
我知道这是 MySQL 8 的新功能?
最佳答案
MySQL 8 对 MySQL 进行了相当大的重写。我相信两者的执行方式相同——因为 MySQL 改进了子查询的处理。
也就是说,第二个版本与早期版本的 MySQL 兼容。第一个版本很方便,有几个原因:
我不建议仅使用子查询或 CTE 来选择特定列。但是,我猜这只是为了说明目的,与您的实际问题无关。
Here从优化角度来看它们是相同的引用:
For derived tables (subqueries in the FROM clause), the optimizer has these choices:
Merge the derived table into the outer query block
Materialize the derived table to an internal temporary table
For view references and common table expressions, the optimizer has the same choices as for derived tables.
关于mysql - WITH语句VS子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744787/
我是一名优秀的程序员,十分优秀!