DB2 10.5 for Linux, UNIX, and Windows

临时表信息

在存取方案执行期间,将使用一个临时表作为工作表。通常,如果需要在存取方案中提前对子查询进行求值,或者中间结果在可用内存中装不下,那么将使用临时表。

如果需要临时表,那么 db2expln 命令输出将包含下列其中一个语句。
   Insert Into Temp Table  ID = tn     --> 普通的临时表
   Insert Into Shared Temp Table  ID = tn     --> 多个子代理程序将以并行方式创建
                                                     普通的临时表
   Insert Into Sorted Temp Table  ID = tn     --> 已排序的临时表
   Insert Into Sorted Shared Temp Table  ID = tn     --> 多个子代理程序将以并行方式创建
                                                            已排序的临时表

   Insert Into Global Temp Table  ID = ts,tn     --> 已声明的全局临时表
   Insert Into Shared Global Temp Table  ID = ts,tn     --> 多个子代理程序将以并行方式创建
                                                               已声明的全局临时表
   Insert Into Sorted Global Temp Table  ID = ts,tn     --> 已排序的已声明全局临时表
   Insert Into Sorted Shared Global Temp Table  ID = ts,tn     --> 多个子代理程序将以并行方式创建
                                                               已排序的已声明全局临时表
ID 是由 db2expln 指定的标识,旨在便于引用临时表。此 ID 以字母“t”为前缀,以指示该表是临时表。
上述每个语句后面都跟着以下语句:
   #Columns = n
此语句指示要插入到临时表的每一行所包含的列数。

已排序的临时表

已排序的临时表可以由类似如下的操作生成:
  • ORDER BY
  • DISTINCT
  • GROUP BY
  • 合并连接
  • “= ANY”子查询
  • “<> ALL”子查询
  • INTERSECT 或 EXCEPT
  • UNION(不带 ALL 关键字)
db2expln 命令输出中,可能会出现许多与已排序的临时表相关联的语句。
  • 以下语句指示在排序中使用的键列数:
       #Sort Key Columns = n
    对于排序键中的每一列,将显示下列其中一行:
       Key n: column_name (Ascending)
       Key n: column_name (Descending)
       Key n: (Ascending)
       Key n: (Descending)
  • 下列语句提供对行数和行大小的估算,以便在运行时可以分配最优的排序堆:
       Sortheap Allocation Parameters:
       |  #Rows     = n
       |  Row Width = n
  • 如果只需要已排序的结果的前几行,那么将显示以下语句:
       Sort Limited To Estimated Row Count
  • 对于对称多处理器 (SMP) 环境中执行的排序,要执行的排序的类型由下列其中一个语句指示:
       Use Partitioned Sort
       Use Shared Sort
       Use Replicated Sort
       Use Round-Robin Sort
  • 下列语句指示已排序的结果是否留在排序堆中:
       Piped
       Not Piped
    如果指示管道式排序,那么数据库管理器会将已排序的输出保留在内存中,而不是将其放入另一个临时表。
  • 以下语句指示排序操作期间将移除重复的值:
       Duplicate Elimination
  • 如果排序操作期间执行了聚集,那么将显示下列其中一个语句:
       Partial Aggregation
       Intermediate Aggregation
       Buffered Partial Aggregation
       Buffered Intermediate Aggregation

临时表完成

每当在表访问的作用域内创建临时表时,将显示一个完成语句。此语句可以是下列其中一项:
   Temp Table Completion  ID = tn
   Shared Temp Table Completion  ID = tn
   Sorted Temp Table Completion  ID = tn
   Sorted Shared Temp Table Completion  ID = tn

表函数

表函数是将数据以表形式返回给语句的用户定义的函数 (UDF)。表函数由下列语句指示,这些语句将提供有关函数属性的详细信息。特定名称将唯一地标识所调用的表函数。
   Access User Defined Table Function
   |  Name = schema.funcname
   |  Specific Name = specificname
   |  SQL Access Level = accesslevel
   |  Language = lang
   |  Parameter Style = parmstyle
   |  Fenced                       Not Deterministic
   |  Called on NULL Input         Disallow Parallel
   |  Not Federated                Not Threadsafe