2013-07-17 81 views
6

独特扫描,范围扫描和跳过扫描是什么意思? 我们可以明确决定使用哪种扫描方式吗? 所有这些扫描有什么优点和缺点?范围扫描vs唯一扫描vs跳过扫描

+2

我从来没有听说过Oracle中的“unix扫描”。我想你的意思是“*独特*扫描”?而PL/SQL仅用于**存储过程。其他一切都只是“SQL”。本网站可能对您有所帮助:http://use-the-index-luke.com所有执行操作也记录在手册中:http://docs.oracle.com/cd/E11882_01/server.112/e16638 /ex_plan.htm#i23461 –

+0

是的我的意思是独特的扫描..感谢澄清,编辑帖子。 –

+1

SQL调优指南的[本章](http://docs.oracle.com/cd/E16655_01/server.121/e15858/tgsql_optop.htm#CHDFJIJA)包含您提到的每种索引访问方法的很好说明,以及其他几个。 –

回答

9

这是不言自明他们的名字:

  • A“独特的”扫描的唯一索引单个值扫描。

  • “范围”扫描从某个起始值开始,并顺序读取索引条目(即,沿着b-tree),直到它遇到超过第二个值的值(搜索单个在非唯一索引上的值是范围扫描,BTW)。

  • “跳过”扫描仅使用组合索引的前导列来计算其不同的值(因此,一旦找到值,它就会沿该索引“跳过”,直到找到下一个值)。

对于给定类型的记录匹配,每个都是适当的(并且是最优的)。 SQL优化器几乎总是为给定的情况选择最合适的(如果统计数据是最新的)。