请问在什么情况下全表扫描比索引扫描效率更高?
有位先生举了这样一个例子:
假设一张表含有10万行数据--------100000行
我们要读取其中20%(2万)行数据----20000行
表中每行数据大小80字节----------80bytes
数据库中的数据块大小8K----------8000bytes
所以有以下结果:
每个数据块包含100行数据---------100行
这张表一共有1000个数据块--------1000块
通过索引读取20000行数据 = 约20000个table access by rowid = 需要处理20000个块来执行这个查询
但是,请大家注意:整个表只有1000个块!
所以:如果按照索引读取全部的数据的20%相当于将整张表平均读取了20次!!So,这种情况下直接读取整张表的效率会更高。
通过索引读取20000行数据~需要处理20000个块来执行这个查询》
⇒为什么要20000个数据块来执行这个查询?不是1个数据块有100行数据吗?
如果按照索引读取全部的数据的20%相当于将整张表平均读取了20次!!》
⇒这个就更加不理解了,为什么相当于读取了20次……?
各位大大可以帮我解释一下吗?或者有更好的例子的话请不吝赐教!
原帖主人好像休息很久了联系不上,下面的链接是原帖地址:
原帖地址:http://blog.itpub.net/519536/viewspace-612715/