如何使用多个表来加速空间索引的创建?

时间:2016-04-15 12:07:49

标签: oracle-spatial

我创建了超过500个包含几何列的表

插入数据后创建空间索引需要更多时间,如何在几秒钟内为所有表创建空间索引,

有没有其他方法可以加快空间索引的创建速度?

1 个答案:

答案 0 :(得分:0)

你想加快什么?创建空间索引(= CREATE INDEX命令)?或者对表的插入/更新。那些桌子有多大?您的业​​务流程可以接受多长时间?

索引通常仅在初始创建和填充空间表时创建一次。除非您的应用程序是以短间隔插入大量数据的应用程序,或者是跟踪移动对象的应用程序,否则无需在初始创建后重建索引。它们显然是自动维护的。

至于构建空间索引的时间,显然比在相同数量的名称上构建索引需要更长的时间(有时是显着的)。显然,你的桌子越大,所用的时间就越长。再说一次,如果你认为你可以在几秒钟内建立500个索引(空间或非空间),即使你使用非常强大的硬件并且表是空的,你也会被迷惑。

有两种方法可以使索引构建花费更少的时间:

1)对于大型表,对它们进行分区并并行进行构建。只有拥有分区选项(仅在EE中可用)才有可能。然后,这只适用于大型表 - 即50 mio行甚至更多。在小桌子上没什么意义。

2)对于大量小型表,只需并行执行构建,即同时运行多个索引创建。使用数据库的调度程序(DBMS_SCHEDULER)来编排它。

如果您追求的是如何加速数据摄取(移动对象,跟踪......),那么您需要更多地了解您的工作流程。