Oracle全面扫描一个几乎为空的散列聚簇表与全面扫描一个满的散列聚簇表所花的时间一样吗?
所花的时间是一样的。原因如下:
散列聚簇索引表中的数据就是索引,没有物理索引。Oracle取得一行的键值,会使用内部函数或提供的方法计算其散列值,然后使用这个散列值得出数据应该在磁盘上的哪个位置,所以花费时间与表中有无数据无关。
散列聚簇创建表时,需要初始化各个块,需要花费更长时间创建,依据内部函数或提供的方法计算的散列值放置数据。这种结构决定了根据散列键能非常快地访问数据,而不是为了频繁地对它进行全面扫描。