在BODS中,当从表中读取数据时,我们可以在表上创建索引吗?
实际上,我正在使用ETL工具将数据加载到目标。性能非常慢,我不希望数据加载停止。
如果我在数据加载过程中创建索引,性能会提高吗?
在分析数据库中,索引基本上有两个用例:
- 加速数据加载
- 加快查询速度
表上的索引越多,加载速度就越慢。因此,传统上;查询";索引在每次数据加载开始时被丢弃,并在加载完成后重新构建。在可能的情况下,这仍然是一种很好的做法,但很明显,如果您有大量的表(因此索引重建时间过长(,用户在数据加载或连续/流加载期间运行查询,那么这是不可能的。
在加载数据时创建索引可能会减慢数据加载速度——这不一定是因为对被索引的表有任何影响,而是因为索引使用数据库资源,因此这些资源不可供数据加载活动使用。
在加载表时对该表创建索引不会加快数据加载速度,而且可能会减慢数据加载速度(请参阅上一段(。当SQL在数据库上执行时,数据库要做的第一件事就是生成一个执行计划,即根据表统计信息、可用索引等确定执行该语句的最有效方式。一旦SQL语句正在执行(基于该计划(,它就不会连续检查自执行开始以来索引是否发生了变化,如果现在有更有效的计划可用,则重新计算计划并重新执行语句。
希望这有帮助?如果是,请勾选此答案