在数据加载期间创建索引

Creation of Index during data load

我们可以在从 it.Actually 读取数据时在 table 上创建索引吗?我正在使用 ETL 工具将数据加载到 target.The 性能很慢,我不这样做希望数据加载停止。

如果在数据加载过程中创建索引,性能会提高吗

使用的ETL工具:-BODS

在分析型数据库中,您基本上有 2 个索引用例:

  1. 加快数据加载速度
  2. 加快查询速度

table 上的索引越多,加载速度就越慢。因此,传统上,“查询”索引在每次数据加载开始时被删除,并在加载完成后 re-built 被删除。在可能的情况下,这仍然是一种很好的做法,但显然,如果您有大量 tables(因此索引过多 re-build 次),用户 运行 在数据加载期间查询或 continuous/streaming loading 那么这是不可能的。

在加载数据时创建索引可能会减慢数据加载速度 - 不一定是因为对被索引的 table 有任何影响,而是因为索引使用数据库资源,因此这些资源无法使用通过数据加载活动。

在加载 table 时在 table 上创建索引不会加快数据加载速度,而且可能会减慢加载速度(参见上一段)。当 SQL 在数据库上执行时,数据库要做的第一件事就是生成执行计划,即根据 table 统计信息、可用索引等确定最有效的语句执行方式。一旦SQL 语句正在执行(基于计划),它不会继续检查自执行开始以来索引是否已更改,re-calculate 计划和 re-execute 语句是否有现在可以使用更有效的计划。

希望这有帮助?如果是,请勾选此答案