首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询时间复杂性-连接与子查询

SQL查询时间复杂性-连接与子查询
EN

Stack Overflow用户
提问于 2017-08-30 17:44:28
回答 2查看 2.4K关注 0票数 2

我的问题是当使用joinsub-query方法给出相同的结果时,

哪个更好,哪个更快?(__时间复杂度__的角度来看)

join需要O(M+N)时间复杂度吗?sub-query是否接受O(M*N)

我这样想错了吗?如果是,请纠正我。

这里,(M,N)是两个表中的行数,结合这些行可以得到结果。

我正在寻找基于SQL标准的答案,而不仅仅是MySQL。

P.S -我已经看过了this的问题和所有的答案。从本质上讲,它并不关注时间复杂性部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-30 18:06:01

联接是否需要O(M+N)时间复杂度?子查询取O(M*N)吗?我这样想错了吗?

是的,恕我直言,你这样想是错误的。SQL是声明性的。您可以使用它来声明您想要的结果,服务器根据可用的索引和数据结构找出传递结果的最佳方法--满足您的查询。

几千年来--真的!--开发人员已经开始研究各种算法、优化和黑客,以降低服务器用于满足查询的过程的复杂性。

随着数千年的经验积累,相关子查询和连接查询之间的性能差异变得不那么重要了。

你的想法是错误的,有一个特定的原因:你是按程序思考,而不是陈述性的思考。当您断言某一特定类型的查询可以在例如O(m*n)时间内满足时,您是在假设用于满足它的过程。几代开发人员一直致力于使您的假设错误。

当然,可以创建具有病态性能特征的表、索引和查询。这种事时时刻刻都发生。但是有人修正了一个指数,问题就解决了。

票数 10
EN

Stack Overflow用户

发布于 2017-08-30 17:51:51

据我所知,演出应该是一样的。在表上应用正确的索引和集群更为重要。

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

https://stackoverflow.com/questions/45966729

复制
相关文章

相似问题

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