pro*_*ats 1 mysql sql sql-server join subquery
我的问题是关于在使用join和sub-query方法产生相同结果时的困境,
哪个更好更快?(纯粹来讲时间复杂度)
是否join采取O(M+N)时间复杂度?和sub-query需要O(M*N)吗?
我这样想是不是错了?如果是,请纠正我。
这里,(M,N)是两个表中的行数,将其组合以获得结果。
我正在寻找基于SQL标准的答案,而不仅仅是MySQL。
附言:我已经解决了这个问题及其所有答案。它本质上不关心时间复杂度部分。
加入是否需要O(M + N)时间复杂度?子查询是否采用O(M * N)?我这样想是不是错了?
是的,尊重,你这样想是错误的。SQL是声明性的。您可以使用它来声明所需的结果,然后服务器会根据可用的索引和数据结构,找出提供该结果的最佳方法(以满足您的查询)。
数千年-真的!-开发人员的努力已经投入了各种算法,优化和技巧,以降低服务器用来满足查询的过程的复杂性。
随着数千年的经验积累,相关子查询和联接查询之间的性能区别变得不那么重要了。
由于特定原因,您的想法是错误的:您在程序上而不是声明式地思考。当您断言某个特定类型的查询可以在例如O(m*n)一段时间内得到满足时,您就在假设用于满足该条件的过程方面进行了假设。几代开发人员一直致力于使您的假设错误。
当然,可以创建具有病理性能特征的表,索引和查询。它一直在发生。但是有人修复了索引,问题就解决了。
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |