Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

监控和提高性能

在查询处理中使用工作表


工作表是已实现的临时结果集,这些临时结果集在执行查询的过程中创建。当 Adaptive Server Anywhere 确定使用工作表所需的成本少于其他策略时,就会使用工作表。通常,读取前几行所需的时间在使用工作表时要多一些,但是在某些情况下,如果可以使用工作表,检索所有行所需的成本则可能会大大降低。由于存在这种差异,Adaptive Server Anywhere 会根据 OPTIMIZATION_GOAL 设置选择不同的策略。缺省值是前几行 (first-row)。如果该值设置为前几行,Adaptive Server Anywhere 将尝试避免使用工作表。如果该值设置为所有行 (all-rows),Adaptive Server Anywhere 将在工作表会减少查询的总执行成本时使用工作表。

在以下情况中将使用工作表:

何时使用工作表 

在这些情况下,操作所影响的记录会进入工作表。在某些情况(如键集驱动的游标)下,将在工作表上建立临时索引。在查询结果出现之前,将所需记录提取到工作表中的操作可能会需要大量的时间。通过创建可用来在上述第一种情况下执行排序的索引,可以减少检索前几行所需的时间。但是,如果使用工作表,则可以减少读取所有行所需的时间,因为它支持基于散列和合并排序的查询算法。这些算法采用顺序 I/O,这比用于索引扫描的随机 I/O 要快一些。

数据库服务器中的查询优化程序将分析每个查询,以确定工作表是否将提供最佳性能。Adaptive Server Anywhere 的新版本中对优化程序的改进可能会改善查询的访问计划。用户无需执行任何操作即可利用这些优化。

注意 

上述的 INSERT、UPDATE 和 DELETE 情况通常不会有性能问题,因为它们通常是一次性操作。但是,如果出现问题,您可能还能够改写该命令以避免冲突并避免建立工作表。这并不总是可能的。


Collection Contents 上一页 下一页 PDF