Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 监控和提高数据库性能 » 提高数据库性能 » 性能提高提示

 

选择优化程序的目标

optimization_goal 选项用于控制 SQL Anywhere 是为减少响应时间 (First-row) 还是为降低总资源消耗 (All-rows) 而优化 SQL 语句。简而言之,您可以选择优化查询处理是为了快速返回第一行还是尽可能降低返回完整结果集的开销。

如果将选项设置为 First-row,SQL Anywhere 会选择用于减少查询结果的首行提取时间访问计划,而且很可能以总检索时间为代价。特别是,优化程序通常会尽量避免需要实现结果以便减少返回首行的时间的访问计划。例如,使用此设置,优化程序会倾向于利用索引来满足查询的 ORDER BY 子句的访问计划,而不是需要显式排序操作的计划。

优化程序针对某一特定语句所使用的优化目标可通过以下规则确定:

  • 如果主查询块的 FROM 子句中含有表,且表提示已设置为 FASTFIRSTROW,则使用 First-row 优化目标对语句进行优化。

  • 如果语句具有 OPTION 子句,且该子句包含对 optimization_goal 选项的设置,则使用此设置来优化语句。

  • 否则,优化程序将使用 optimization_goal 选项的当前设置。

请注意,即使优化目标是 First-row,但优化程序可能仍无法找到能够快速返回第一行的计划。例如,对于因具有 DISTINCT、GROUP BY 或 ORDER BY 子句而需要实例化但因没有相关索引从而无法提供必要顺序的语句,将使用 All-rows 目标进行优化。

如果此选项设置为 All-rows(缺省值),则对 SQL Anywhere 查询进行优化后将选择预计总检索时间最少的访问计划。将 optimization_goal 设置为 All-rows 可能适用于要处理整个结果集的应用程序,例如 PowerBuilder DataWindow 应用程序。

另请参见

另请参见以下 SQL 语句的 OPTION 子句: