有一个表s(A,C)
A是关键。
s中的记录数:ns = 20,000
块可以包含来自s
的30条记录问题是:
我需要读取多少个块以及在每个查询中返回答案的数量:
select*
from s
where A=100,000
select*
from s
where A<100,000
select*
from s
where A>100,000
我计算过:
s有20,000/30 = 667块
但我不知道如何解决这个问题。
答案应该是一个数字(计算),而不是sql中的查询。这是关于估计我们访问内存的次数
答案 0 :(得分:1)
如果我理解正确,你会做类似以下的事情:
select rank() over (order by a) / 30 + 1 as block, *
from s
order by block
这将为每一行提供一个“块号”,每个块有30行。