全表扫描

http://baike.baidu.com/link?url=PNHNh2FO7eQ5tgpKX1s28xc0zeW_65tYZzVZRBN_ACKvI9xHEqy66uxoacoaMUyW9jiUMcnx7tEPN1N6koXFpK


定义:编辑

在数据库中,对无索引的表进行查询一般称为全表扫描。全表扫描是 数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。

2全表扫描的成本编辑

全表扫描的成本 = 表的 数据块总数 / 多块读取
一般说来数据库在进行全表扫描时进行的是多块读取,也就是说每次从buffer cache中读取多块,而不是一次一块的读。另外,全表扫描的成本中并不包括对数据进行过滤和计算的成本。也就是说全表扫描的成本仅仅是读取数据的成本,而不包含对数据进行计算,过滤的CPU成本。

3全表扫描的稳定性编辑

相对于索引范围扫描来说,全表扫描的成本是衡定不变的。无论你的查询是想访问一笔数据还是访问整个表的所有数据,全表扫描都会把整张表读出来。而索引范围扫描就不同,因为有了索引这个有序的数据结构做支持,可以只访问需要的索引块和需要的 数据块,而不是访问整张表。

4何时适用全表扫描编辑

1.  单表查询
※ 表很小,索引可能就比表还大。
※ 访问的数据占全表数据的百分比很大,索引访问的总成本大于全表扫描的成本。
※ 相对于索引来说,表中的数据排列过于凌乱,表现出来就是索引的 clustering_factor 很大,导致索引的访问成本剧增。
2.  多表连接
※ hash join的时候,内层表和外层表都可以使用全表扫描(对于某个单独的表的访问是否适用全表扫描,这个又回到了单表查询的情况)。
※ nest loop的时候,外层表可以使用全表扫描,内层表一般不用全表扫描。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值