Tsql 什么时候调用updatestatistics更好?在提交事务之前或之后
我正在从事一个ETL项目,积极地用数据填充表。有时,如果缺少某些内容,则必须撤消整个数据修改块,因此我使用的是事务。当出现问题时,应用回滚,否则,更新统计数据可能有助于提高效率 所以我的问题是,在事务内部还是在提交之后更新统计数据更有效 目前工作情况如下:Tsql 什么时候调用updatestatistics更好?在提交事务之前或之后,tsql,transactions,Tsql,Transactions,我正在从事一个ETL项目,积极地用数据填充表。有时,如果缺少某些内容,则必须撤消整个数据修改块,因此我使用的是事务。当出现问题时,应用回滚,否则,更新统计数据可能有助于提高效率 所以我的问题是,在事务内部还是在提交之后更新统计数据更有效 目前工作情况如下: BEGIN TRY BEGIN TRAN UPDATE stuffs SET ... INSERT things VALUES(... UPDATE STATISTICS stuffs UPDATE
BEGIN TRY
BEGIN TRAN
UPDATE stuffs SET ...
INSERT things VALUES(...
UPDATE STATISTICS stuffs
UPDATE STATISTICS things
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
RAISERROR( ... -- RAISERROR prevents from executing past this point
END CATCH
IF @@TRANCOUNT > 0 COMMIT TRAN
但也许这样更好
BEGIN TRY
BEGIN TRAN
UPDATE stuffs SET ...
INSERT things VALUES(...
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
RAISERROR( ... -- RAISERROR prevents from executing past this point
END CATCH
IF @@TRANCOUNT > 0 COMMIT TRAN
UPDATE STATISTICS stuffs
UPDATE STATISTICS things
我尝试了这两种方法,结果几乎相同,但如果有更多的数据或更多的回滚,结果可能会有所不同。我将使用第二种方法 如果将事务放入try块,则当事务引发错误时,事务将回滚
我相信即使在回滚应用于您的事务之后,您仍然需要“更新统计信息”来提高效率。如果是这样,最好在事务提交后保留“更新统计信息”。我将使用第二个 如果将事务放入try块,则当事务引发错误时,事务将回滚
我相信即使在回滚应用于您的事务之后,您仍然需要“更新统计信息”来提高效率。如果是这样,最好在事务提交后保留“更新统计信息”。当您的代码运行时,您处于错误的平台。你需要的是代码检查。当你的代码工作时,你在错误的平台上。您需要的是代码审查。