SQL Server中三种查找数据方法的比较

在SQL Server中主要有有三种方式可以查找数据,分别是:
[list]
[*]表扫描(Table scan)
[*] 索引扫描(Index scan)
[*] 索引查找(Index seek)
[/list]
Index seek中,SQL Server 沿着索引树(index tree)从根级(root level)向下进行索引键值匹配搜索,直到搜索到指定的行,然后使用存储在索引键值中的书签值(bookmark value)直接从数据页中检索匹配的数据行(这个书签值可以是行标识符(RID),或者聚集索引的键值)。

对一个索引扫描(Index scan),SQL Server搜索索引树中所有叶级(leaf level)中的行来进行可能匹配的查找。如果发现满足匹配的行,然后利用书签检索数据行。

最后一种是表扫描,SQL Server从数据表,可能是堆表(Heap Table)或者聚集索引的叶子页从头到尾进行扫描来查找数据。如果是数据表上已建立聚集索引,此时相当于索引扫描。

尽管前两者都使用了索引,从I/O代价角度来讲,索引扫描比索引查找的代价要高,但比表扫描(Table scan)要略微要小些。所以在实际中,尽量使用索引查找和索引扫描,而不要用表扫描。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值