优化临时表使用情况

已完成

本单元介绍临时表、不同类型的临时表以及应何时使用它们。

临时表允许您有效地创建和清除临时数据。 两种类型的临时表为:

  • InMemory
  • TempDB

表类型可在表的 TableType 属性上确定。

突出显示表类型属性的属性表页面的屏幕截图。

InMemory 表使用客户端层或 AOS 层上存在的索引顺序存取方法 (ISAM) 文件。 Microsoft SQL Server 没有与 ISAM 文件的连接。 在达到 128 KB 之前,数据一直存储在内存中,然后数据集将写入服务器层上的磁盘文件。 当插入第一条记录时,将实例化 InMemory 表。 该表存在,并且仅在存在记录缓冲区时将内存分配给该表。

当需要存储和检索数据,而不将数据写入数据库时,可能会使用 InMemory 表。 这就像一个容器,但 InMemory 表允许您使用索引加快数据检索速度。 如果您只使用一些记录,应该使用容器,而不是 InMemory 表。 您可以使用 X++ SQL 语法加入 InMemory 表,但是加入和 SQL 操作通常效率低下。

TempDB 表使用 SQL Server 的 TempDB 数据库。 在当前方法不再使用数据或系统重启时,此类型的表会导致删除数据。 通过禁用表的配置键,常规表将自动转换为 TempDB 表,这允许对系统中禁用的表进行引用以继续编译和运行。 此外,TempDB 表通常用于报表以操作数据。

TempDB 表的功能包括以下内容:

  • 加入到常规表。
  • 使用外键。
  • 按公司或全球划分。
  • 具有索引。
  • 具有方法,但无法覆盖方法。
  • 从客户端或服务器层实例化。
  • 用作查询。
  • 没有对配置键的要求。

TempDB 表还具有以下限制:

  • 无法管理生效日期数据。
  • 它们不包含删除操作。
  • 记录级别安全性不适用。
  • 您不能在视图中使用它们。