sql - 2条sql的SQL性能比较
问题描述
哪个查询在性能方面更好?
一个
select users.email
from (select * from purchases where id = ***) A
left join users on A.user_id = users.id;
乙
select users.email
from purchases A
left join users on A.user_id = users.id where A.id = ***;
基本上,我认为A更好。(但如果 sql server 正在显着优化查询)
请解释一下哪个查询更好以及为什么。谢谢。
解决方案
几乎所有数据库优化器都会忽略子查询。为什么?SQL 查询描述了正在生成的结果集,而不是处理它的步骤。SQL 优化器生成运行的底层代码。
大多数优化器足够聪明,可以忽略子查询并选择最佳索引、分区和算法,而不管它们如何。一个例外是某些版本的 MySQL/MariaDB 倾向于实现子查询——这是一个性能杀手。我认为即使在最近的版本中也有所改进。
推荐阅读
- android-studio - 使用 Flutter 预览相机上的像素颜色
- laravel - 图像 src 在 Laravel 中没有得到正确的 pat
- r - 轴标签的格式
- python - 如何检测文件是否存在于python中
- c++ - 如何对模板类型强制执行常量?
- scala - 如何在Scala中将字符串列表转换为映射?
- data-structures - 二叉搜索树对n个元素进行排序的复杂度是多少
- javascript - 如何将网站上的每个单词都更改为另一个单词?
- python - 使用 tensorflow 2.0 运行 RNN LSTM 模型时出现错误
- xcode - Xcode 错误报告 Xcode 意外退出