我有一个ETL过程,涉及大量使用SELECT INTO
语句的存储过程(最少记录日志,因此速度更快,因为它们生成的日志流量较少)。在一个存储过程中发生的一批工作中,几个最昂贵的操作是看似只是缓存查询结果并将它们复制到正在创建的表中的急切假脱机。在SQL Server上避免急于假脱机操作的方法
关于eager spools的MSDN文档相当稀少。有没有人对这些是否真的有必要(以及在什么情况下)有更深入的了解?我有一些可能或可能不合理的理论,但是在查询中消除这些理论方面没有成功。
.sqlplan文件非常大(160kb),所以我猜这可能是不合理的,直接发布到论坛。
因此,这里有一些理论,可能是适合于具体的答案:
- 查询使用一些UDF的数据转换,如解析格式的日期。这种数据转换是否需要在构建表之前使用eager spool来分配合理的类型(例如varchar长度)?
- 作为上述问题的扩展,没有人有更深入的观点,看什么在查询中执行此操作或不执行此操作?
读取隔离可能适用于从源复制的暂存区进程的查询。另外,即使这不能解决我的特殊问题,它也增加了一些洞察力,因为在我的MSDN文献中没有提到有关急切假脱机操作的信息。 – ConcernedOfTunbridgeWells 2008-09-18 09:57:58