SQL 查询优化之索引扫描与全表扫描漫谈

SQL 查询优化之索引扫描与全表扫描漫谈

阅读对象: 初级用户

索引扫描---也许你有过这样的经历, 某日应邀第一次去朋友家, 朋友告诉你是开心家园132栋1102, 之后你就去了开心家园, 接下来你要从该小区中寻找132栋, 但是小区很大, 你可能会凭经验楼栋号是连续分布的, 依照进开心家园大门的几栋楼栋号的排列顺序往前找, 也许运气好, 你很容易就找到了, 但是有的小区楼栋号分布并不连续, 这个时候在你觉得下一栋就是你要找的楼栋号时, 走近一看发现却不是,这时你不得不再次花费时间来寻找. 那如何快速的找到你的楼栋号所处的位置呢? 物业已经为你制作了一个楼栋号分布图竖在大门口, 这时你只需要查看这个地图就能轻易的找到你要的楼栋号在该小区的位置, 接下来就直接奔往那个位置即可. 这种情况运用到数据库查询中, 我们可以发现, 整个小区相当于一个数据表, 各个楼栋是这个数据表中的数据, 这里我们使用到的楼栋号分布图就相当于这个数据表的 索引, 因此当我们查找数据表中指定某一个数据时, 使用 索引查找到数据所在的位置(ROWID), 然后直接根据位置就能够得到你要的数据了. 这就是 索引在查询中加快查询速度的使用.

全表扫描---那是不是使用 索引查找数据就一定快了呢? 某日, 你被指派为水表抄表员, 你需要对该小区200栋楼的居民用户抄水表读数, 你知道一共从1到200号, 但我想你一定不会根据楼栋号分布图先查看第1栋的位置, 然后跑到第1栋的楼号去抄完表, 再根据第2号楼的位置到第2个楼去抄表, 你一定是根据小区的分布, 从第一排的楼栋的第一个楼号开始连续的从一栋抄完再到紧挨着的那一栋(楼栋号可能并不连续),第一排结束到第二排 这样顺序走完一遍即可. 这对于 SQL查询就相当于全表扫描, 像这种查询数据表中全部(或者说大部分)数据的时候, 走全表扫描比走 索引更加有效.
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值