数据库导出索引选项

利用“索引”对话框,可创建从 IBM® SPSS® Modeler 导出的数据库表的索引。可指定要包含的字段集合并根据需要自定义 CREATE INDEX 命令。

该对话框由两部分组成:

  • 上方的文本字段显示可用于生成一个或多个 CREATE INDEX 命令的模板,该字段的缺省格式为:

    CREATE INDEX <index-name> ON <table-name>

  • 对话框下方的表用于指定要创建的各个索引。可指定每个索引的名称以及要包含的字段或列。对话框将依次自动生成 <index-name ><table-name >参数的值。

    例如,可以为字段 empid deptid 生成如下所示的单索引 SQL 语句:

    CREATE INDEX MYTABLE_IDX1 ON MYTABLE(EMPID,DEPTID)

    可以添加多行创建多索引。每一行将单独生成一个 CREATE INDEX 命令。

自定义 CREATE INDEX 命令

可以为所有索引或仅为特定索引自定义 CREATE INDEX 命令。通过此选项可以灵活地调整设置,以兼容特定数据库要求或选项,还可以根据需要对所有索引或仅对特定的单个索引进行定制。

  • 选择对话框上方的自定义 CREATE INDEX 命令选项,可修改所有后续添加的索引使用的模板。请注意,系统不会自动对已添加到表中的索引应用更改。
  • 选择表中的一行或多行,然后单击对话框上方的更新选定的索引,即可将当前自定义应用到所有选定的行。
  • 选择每一行的自定义复选框可仅修改相应索引的命令模板。

请注意,对话框将根据表中的设定自动生成 <index-name ><table-name >参数的值,但无法直接编辑这些参数值。

BITMAP 关键字。如果使用的是 Oracle 数据库,那么可以定制模板来创建位图索引,而不是标准索引,方法如下:

CREATE BITMAP INDEX <index-name> ON <table-name>

位图索引对于创建包含少量不同值的列的索引很有用。所需 SQL 语句如下所示:

CREATE BITMAP INDEX MYTABLE_IDX1 ON MYTABLE(COLOR)

UNIQUE 关键字。大多数数据库都支持在 CREATE INDEX 命令中使用 UNIQUE 关键字。此关键字将强制执行一个唯一性约束,类似于对基表执行的主要关键字约束。

CREATE UNIQUE INDEX <index-name> ON <table-name>

请注意,不必对实际指定为主要关键字的字段执行此约束。由于大多数数据库会自动为 CREATE TABLE 命令中指定的任何主要关键字段创建索引,因此不必明确创建这些字段的索引。有关更多信息,请参阅数据库导出模式选项主题。

FILLFACTOR 关键字。可以对某些索引的物理参数进行优调。例如,利用 SQL Server,用户可以根据日后更改表所产生的维护成本来选用索引大小(首次创建后)。

CREATE INDEX MYTABLE_IDX1 ON MYTABLE(EMPID,DEPTID) WITH FILLFACTOR=20

备注

  • 如果已存在指定名称的索引,那么索引创建将失败。任何故障最初都将被当作警告处理,以便创建后续索引,然后在所有索引都已尝试后在消息日志中重新报告为错误。
  • 为获得最佳性能,应在将数据加载到表中后创建索引。索引必须至少包含一列。
  • 在执行节点前,可以在消息日志中预览生成的 SQL。
  • 对于写入数据库的临时表(即启用节点高速缓存时),指定主要关键字和索引的选项不可用。但是,系统可以根据数据在下游节点中的使用方式在临时表中创建相应的索引。例如,如果逐个将高速缓存数据添加到 DEPT 列,则有必要为此列高速缓存表创建索引。

索引和查询优化

在某些数据库管理系统中,对数据库表进行创建、加载和建立索引操作之后,还需要执行进一步的操作,优化程序才能利用索引来提高对新表的查询速度。例如,在 Oracle 中,基于成本的查询优化程序要求先对表进行分析,然后才能在查询优化系统中使用表的索引。Oracle 的内部 ODBC 属性文件(用户不可见)包含导致发生此情形的选项,显示如下:

# Defines SQL to be executed after a table and any associated indexes# have been created and populatedtable_analysis_sql, 'ANALYZE TABLE <table-name> COMPUTE STATISTICS'

在 Oracle 中创建表(无论是否定义主要关键字或索引)时,都会执行此步骤。如有必要,可以类似方法自定义其他数据库的 ODBC 属性文件 - 请联系支持获得帮助。