首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询成本的理论计算

SQL查询成本的理论计算
EN

Stack Overflow用户
提问于 2017-04-16 21:35:01
回答 1查看 128关注 0票数 1

我需要通过分析结果和所查看的行数来评估理论中的SQL查询。任何链接到网上的信息都是受欢迎的,因为我在任何地方都找不到关于这个问题的帮助。

我在课堂上学到的东西

假设我有两张桌子,

  • A包含100个元组
  • B包含500个元组。

符号:|A| is the number of tuples after the query {A} is the number of tuples examined to produce the query

我被证明

代码语言:javascript
运行
复制
R = |A JOIN B| = 500 (we take the biggest of the two)
{A JOIN B} = 100 * 500 = 50 000 (we need to check every tuple)

R' = |R WHERE NO=1| = 5 (we suppose each no has 5 occurences)
{R'} = 500 (we had to loop through the 500)

R'' = |R'[name]| ~5
{R''} = 5

我的问题

  • A包含50个元组
  • B包含100个元组。

R = |A JOIN B|

我的老师说{A连接B}花费150,100通过B,50通过A,但是为什么这50*100不像前面的例子?

他还说,在联合费用5000之后实行限制,联合表中的总行数为1500行。不是50*100吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-16 21:48:20

如果结果是笛卡尔积,则结果中的行数为50*100 = 5,000。

也就是说,如果在联接上没有任何条件,那么A的每一行都被连接到B的每一行,并且得到一个包含所有行组合的结果。

但是,如果联接有一些限制,那么通常会得到一组小得多的行。您的老师假设了一个例子,其中满足条件的两个表之间的组合数给出了1500行的结果。

5,000行结果将是最大的结果。如果A和B的行组合不满足条件,则可以有其他的连接条件提供不同的结果,甚至可以降到零行。

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

https://stackoverflow.com/questions/43442404

复制
相关文章

相似问题

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