Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

查询优化与执行

优化程序的作用


优化程序的作用是设计一种有效的方式来执行 SQL 语句。优化程序以访问计划的形式来表示它所选择的方法。访问计划将描述要扫描哪些表、每个表使用哪些索引(如果有)、将使用哪种连接策略以及按什么顺序读取表。通常,有大量的计划都能达到相同的目标。其它变量可能会进一步扩大可能的访问计划的数量。

基于成本的优化 

优化程序会使用高效的算法(而且在某些情况下还是专有的算法)来开始选择可用的做法。它将根据各个查询所需资源的预计值来做出决定。优化程序既会考虑磁盘访问操作的成本,也会考虑各项操作所需要的预计 CPU 成本。

独立于语法的优化 

大多数命令都可以使用 SQL 语言以不同的形式来表示。这些表示形式在语义上等效(因为它们完成相同的任务),但在语法上却具有明显的差异。Adaptive Server Anywhere 优化程序仅根据每个语句的语义设计出合适的访问计划,几乎毫无例外。

语义差异虽然看起来可能很明显,但通常不会造成任何影响。例如,谓语、表和属性在查询语法中的顺序的差异并不会影响访问计划的选择。而优化程序也不会因为查询是否包含视图而受到影响。

合适的计划,并不一定是最佳的计划 

优化程序的目标是找出合适的访问计划。在理想情况下,优化程序将尽可能地找出最为高效的访问计划,但这一目标通常是不切实际的。对于复杂的查询,可能会存在大量的可能性。

无论优化程序具有多高的效率,如果对每一种选择都进行分析,则会消耗一定的时间和资源。优化程序会将进一步优化所需的成本和执行到当前为止所找到的最佳计划所需的成本进行比较。如果优化程序已设计出了成本较低的计划,就会停止下来执行该计划。与执行已找到的访问计划相比,进一步的优化可能会消耗更多的资源。

如果查询非常复杂并且占用大量的资源,优化程序就可能要运行较长的时间。如果查询占用非常多的资源,则优化程序可能会运行很长的时间,从而导致出现明显的延迟。


Collection Contents 上一页 下一页 PDF