表性能提升提示

适用于:Outlook 2013 | Outlook 2016

由于许多表操作可能很耗时,并且无法指示进度,因此使用以下技术提高性能很有帮助:

  • 使 IMAPITable:按正确顺序进行 IUnknown 调用

    客户端和服务提供商可以通过多种方式处理表。 他们可以使用默认的列集和排序顺序打开表并检索所有行的数据。 或者,他们可以通过更改列集、更改排序顺序或建立限制来缩小表的范围来修改表的此默认视图。 打算在检索任何数据之前执行其中一个或多个操作的表用户应按以下顺序执行这些操作:

    1. 使用 IMAPITable::SetColumns 定义列集。

    2. 使用 IMAPITable::Restrict 建立限制

    3. 使用 IMAPITable::SortTable 定义排序顺序。

    按此顺序执行这些任务会限制要排序的行数和列数,从而提高性能。

  • 如果可能,请使用TBL_BATCH标志延迟操作

    在方法上设置TBL_BATCH标志允许表实现者先收集多个调用,然后再对任一调用执行操作。 而不是对远程服务器进行可能多次调用;表实现者可以创建一个,一次执行所有操作。 在需要操作之前,不会评估操作的结果。

    例如,当客户端调用 IMAPITable::Restrict 以指定设置了TBL_BATCH标志的限制时,该限制不必生效,直到客户端调用 IMAPITable::QueryRows 来检索数据。 这允许表实现者将两个调用的工作合并为一个调用。 利用 TBL_BATCH 标志的表用户应注意,在这些条件下的错误处理可能更为复杂。

    由于处理延迟操作中的错误类似于在设置MAPI_DEFERRED_ERRORS标志时处理错误,有关详细信息,请参阅 延迟 MAPI 错误

  • 保留常用属性的缓存

    实现表的服务提供商可以通过缓存常用对象属性的副本来减少创建视图所需的时间。 在内存中保留这些属性的副本可节省每次必须重新生成视图时都必须从对象中检索这些属性。

另请参阅