要从 SQL 优化获取最佳的性能改善,请注意此部分中的以下几点。
流顺序。 当节点的函数在 SQL 中没有等效语义时,可能会停止 SQL 生成,因为 SPSS Modeler的数据挖掘功能比标准 SQL 支持的传统数据处理操作更丰富。 发生这种情况时,任何下游节点的 SQL 生成也都会受抑制。 因此,通过对节点重新排序,使导致 SQL 停止的操作尽可能放在下流,或许能够显著改善性能。 SQL 优化器可以自动执行一定数量的重新排序,但可能需要进一步改进。 “选择”节点就是一个很好的备选,此节点通常可以前移。 有关更多信息,请参阅 支持 SQL 回送的节点 。
CLEM 表达式。 如果流无法重新排序,您或许可以更改节点选项或 CLEM 表达式,或者重新设计操作的执行方式,以使其不再阻止 SQL 生成。 “派生”节点、“选择”节点以及类似的节点通常可以呈现为 SQL,条件是所有 CLEM 表达式运算符都具有对等 SQL。 大多数运算符都可以呈现,但有许多运算符会阻止 SQL 生成(尤其是序列函数 ["@ functions"])。 有时,生成会因为生成的查询变得太复杂,以至于数据库无法处理而停止。 有关更多信息,请参阅 CLEM 表达式和支持 SQL 回送的运算符 。
多个输入节点。 对于流具有多个数据导入节点的情况,SQL 生成将独立应用于每个导入分支。 即使生成在某个分支中停止,也可以在另一个分支中继续。 对于两个分支合并的情况(并且两个分支在合并前都可以表示为 SQL),合并本身通常可以替换为数据库连接,生成可以在下游继续。
评分模型。 通过将生成的模型呈现为 SQL,支持对某些模型进行数据库内评分。 但是,一些模型会生成极其复杂的 SQL 表达式,而这些表达式在数据库中并非始终都能有效地进行求值。 因此,必须对各个生成的模型块分别启用 SQL 生成。 如果您发现某个模型块正在阻止 SQL 生成,请打开该模型块的设置,然后选择生成此模型的 SQL(对于某些模型,可能还有一些其他选项可控制生成)。 运行测试,确认此选项是否有益于您的应用程序。 有关更多信息,请参阅 支持 SQL 回送的节点 。
在测试建模节点以查看模型的 SQL 生成是否有效工作时,建议首先保存 SPSS Modeler中的所有流。 请注意,一些数据库系统在尝试处理(潜在复杂)生成的 SQL 时可能会挂起。
数据库高速缓存。 如果要使用节点缓存以在流中的某些重要点(例如,在“合并”或“汇总”节点之后)保存数据,请确保启用数据库缓存和 SQL 优化。 这样将使数据在大多数情况下都能够缓存到数据库中的临时表(而不是缓存到文件系统)。
特定于供应商的 SQL。 生成的大部分 SQL 都符合标准 (SQL-92),但在实际应用中,会利用一些特定于供应商的非标准功能。 根据数据库源不同,SQL 优化程度可能有所变化。