首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL联接:条件在子查询中还是在子查询中?

MySQL联接:条件在子查询中还是在子查询中?
EN

Stack Overflow用户
提问于 2013-09-21 11:44:38
回答 2查看 44关注 0票数 1

哪一个更有效率?

代码语言:javascript
复制
LEFT JOIN  cscart_seo_names seo
ON p.product_id = seo.object_id AND seo.type = 'p'

代码语言:javascript
复制
LEFT JOIN (
            SELECT seo.object_id, seo.name
            FROM cscart_seo_names seo
            WHERE seo.type = 'p'
        ) seo
            ON p.product_id = seo.object_id
EN

回答 2

Stack Overflow用户

发布于 2013-09-21 12:20:38

检查效率的唯一可靠方法是检查实际的执行计划。请注意,执行顺序与表在查询中出现的顺序不同。

在这种情况下(假设它不是更大查询的一部分),我非常确定优化器将为您的查询的两个版本选择相同的计划……

票数 1
EN

Stack Overflow用户

发布于 2013-09-21 11:50:19

联接可以创建更适合您的查询的执行计划,并且可以预测应该加载哪些数据来处理并节省时间,这与子查询不同,子查询将运行所有查询并加载所有数据来进行处理。

子查询的好处是它们比连接更具可读性:这就是为什么大多数SQL新手更喜欢它们;这是一种简单的方法;但是当谈到性能时,连接在大多数情况下都更好,尽管它们也不难读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18928666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档