您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

使用 SQLScript 的最佳实践

到目前为止,本文档引入了 SQLScript 的语法和语义。此知识足以用于将功能需求映射到 SQLScript 过程。但是,除了功能正确性之外,程序的非功能性特征对用户接受起着重要作用。例如,最重要的非功能特征之一是性能。

以下优化都适用于 SQLScript 中的语句。此处显示的优化涵盖了数据流如何利用 SAP HANA 数据库中的并行度。

  • 降低 SQL 语句的复杂性:将复杂的 SQL 语句分解为多个更简单的语句。这使 SQLScript 过程更易于理解。

  • 标识公用子表达式:如果将复杂查询拆分为逻辑子查询,可帮助优化器识别公用子表达式并派生更高效的执行计划。

  • 多级聚合:在多级聚合的特殊情况下,SQLScript 可以在更精细的分组下利用结果来计算较粗略的聚合,并在不同的表变量中返回组的不同粒度。这样可以节省客户端重新检查查询结果的工作量。

  • 减少依赖性:由于 SQLScript 被转换为数据流图形,因此此图形中的独立路径可以并行执行,从而减少依赖性可以实现更好的并行度,从而提高性能。

  • 避免使用游标:检查是否可以使用(流)SQL 语句替换游标,以获得更好的优化和利用并行执行的机会。

  • 避免使用动态 SQL:执行动态 SQL 很慢,因为每次调用过程时都必须执行编译时间检查和查询优化。另一个相关问题是安全性,因为如果不正确检查使用的变量,则构建 SQL 语句可能会损害安全性。