【摘抄】
提高局部范围扫描执行速度的原理
书中提及一个概念:无条件查询,按字面理解就行了。
如:Select * from TB
后面不带任何查询语句之类的。
在书中所说,Select * from tb order by item;
前者可能执行局部范围扫描,后者执行属于全部范围扫描
以上,针对的是Oracle来说的,前者会受到Array Size的影响
在mssql2000上实践类似语句:
前者采用聚簇索引扫描
后者采用普通索引扫描或全表扫描
当然,前者效率高些。
书中结论:
执行速度变慢的真正原因不仅是因为排序,为了排序操作而对整体数据范围进行扫描也是其中之一。
书中一个例子使用不同的索引来说明一个问题,结论如下:
满足驱动查询条件的数据范围越小,所执行的操作量就越少;而满足过滤查询条件的数据范围越大,所执行的操作量越少。