如何解决这个连接表查询问题?

问题描述 投票:0回答:0

考虑这个查询

SELECT T.D FROM T,R WHERE T.A = R.A AND T.B = B1 AND R.C = C1

为查询分配了 102 个缓冲区,查询的输出包含 7 行。

Number of rows of T = 50,000,000 
Number of blocks of T = 1,000,000
Number of rows of R = 500,000,000
Number of blocks of R = 5,000,000

Number of distinct values of R.A = 100,000 
Number of distinct values of T.A = 100,000 
Number of distinct values of R.C = 100,000 
Number of distinct values of T.B = 100,000

Index tree level of R.A = 4 
Index tree level of T.A = 3 
Index tree level of R.C = 5 
Index three level of T.B = 4

任务:

  1. 根据嵌套循环的块读取计算可能的最低成本(无索引)
  2. 如果允许创建索引,您将如何降低查询成本。在这种情况下,费用是多少?

我尝试过的

鉴于分配了 102 个缓冲区并返回了 7 行,因此假设缓冲区分配完美,

rowSize = 102/7
.

但仅此而已。接下来我应该如何处理?

我知道指数水平。列的不同值有什么用?

对此的任何资源或提示将不胜感激。

sql database indexing data-warehouse
© www.soinside.com 2019 - 2024. All rights reserved.