全局分区索引是否比非分区索引更好(更快)?

Kev*_*ock 8 oracle indexing performance partitioning oracle10g

我很想知道分区通常是查询目标的数字列是否有性能优势.目前我有一个包含约5000万条记录的物化视图.当使用常规b树索引并通过此数字列进行搜索时,我得到的成本为7,查询结果的时间约为0.8秒(使用非准备缓存).为该列添加全局散列分区(具有64个分区)后,我得到的成本为6,查询结果大约为0.2秒(同样使用非预备缓存).

我的第一反应是分区索引提高了我的查询性能.但是,我意识到这可能只是一个巧合,可能完全取决于所搜索的值,或者其他我不知道的值.所以我的问题是:将一个全局散列分区添加到大型表上的数字列是否有性能优势,或者是确定要扫描出哪些索引分区的成本 - 只需对一个全范围扫描的成本进行加权非索引分区?

我确信这与许多Oracle问题一样,可以通过"它取决于"来回答.:)我有兴趣了解我应该考虑哪些因素来确定每种方法的好处.

谢谢!

Sve*_*lov 4

我很确定您在研究中找到了这个参考资料 -分区表和索引。不过,如果有人感兴趣,我会提供一个链接,这是关于分区的非常好的材料。

开门见山 - 分区索引只是将索引分解为多个部分(在您的情况下为 16 个),并根据其散列分区键传播数据。当你想使用它时,Oracle会“计算”键的散列并确定在哪个部分继续搜索。

了解索引搜索的工作原理,对于非常大的数据,我认为最好选择分区索引,以减少您遍历的索引树(常规索引)。它实际上取决于表中的数据(常规索引树是如何组成的)并且是散列并直接跳转到较低节点比从起始节点遍历常规树更快。

最后,您必须对测试结果更有信心。如果一种技术在您的精确数据上比其他技术能提供更好的结果,请不要担心实施它。