Sql 查看复杂数据的替代方案?
我有一个表,其中包含对查看我的应用程序的用户没有用处的部分数据。查看器希望看到一个包含所有计算出的值的类似表,并希望能够快速查询该数据。通常,这是使用视图的最佳位置。不幸的是,计算的复杂性限制了我对视图的使用,因此我需要另一种解决方案。我正在考虑做如下的事情 表A包含后端数据。每当更新此表时,都会触发一个触发器来更新表B,表B显示这些计算的结果。此时可以快速查询表B 我唯一担心的是,计算过程有点冗长,表A有可能被多次更新。有没有类似于“选择前”触发器的解决方案?因此,表A基本上可以在一行中更新多次,但计算只会在查询表B时发生 以下是一个时间线示例:Sql 查看复杂数据的替代方案?,sql,sql-server,sql-server-2005,tsql,triggers,Sql,Sql Server,Sql Server 2005,Tsql,Triggers,我有一个表,其中包含对查看我的应用程序的用户没有用处的部分数据。查看器希望看到一个包含所有计算出的值的类似表,并希望能够快速查询该数据。通常,这是使用视图的最佳位置。不幸的是,计算的复杂性限制了我对视图的使用,因此我需要另一种解决方案。我正在考虑做如下的事情 表A包含后端数据。每当更新此表时,都会触发一个触发器来更新表B,表B显示这些计算的结果。此时可以快速查询表B 我唯一担心的是,计算过程有点冗长,表A有可能被多次更新。有没有类似于“选择前”触发器的解决方案?因此,表A基本上可以在一行中更新多
触发器操作插入或更新的整批记录,而不是一次操作一行 如果计算时间太长,只有几百条新记录,那么计算本身可能需要进行性能调整 如果您在触发器中进行计算,那么它们是每个事务的一部分,并且在允许另一个事务之前,它们将完成,因此可以想象这会降低插入速度。如果您正确地编写触发器来处理数据集,而不是一行一行地处理数据集,那么它可能不会引起问题。数百行对于大多数计算来说都是微不足道的。如果在批处理中插入数百万行,我更关心的是触发器性能会干扰其他进程 您可以创建一个proc来执行计算,并将其计划为每十分钟左右运行一次,然后在调用报告时再次运行。通过这种方式,它可以提前完成大部分预计算,并在报告时捕获最后几条新记录 给我们一个计算和潜在触发的示例,我们可以更好地帮助您
如果单个事务进入一个组触发器运行,则无法将一组事务分组。也许你应该停止使用LINQ来处理这个问题,如果你需要批量处理的话,可以发送一个abatch语句。如果一次处理多条记录,则通常最好使用基于集合的操作。触发器操作插入或更新的整批记录,而不是一次一行 如果计算时间太长,只有几百条新记录,那么计算本身可能需要进行性能调整 如果您在触发器中进行计算,那么它们是每个事务的一部分,并且在允许另一个事务之前,它们将完成,因此可以想象这会降低插入速度。如果您正确地编写触发器来处理数据集,而不是一行一行地处理数据集,那么它可能不会引起问题。数百行对于大多数计算来说都是微不足道的。如果在批处理中插入数百万行,我更关心的是触发器性能会干扰其他进程 您可以创建一个proc来执行计算,并将其计划为每十分钟左右运行一次,然后在调用报告时再次运行。通过这种方式,它可以提前完成大部分预计算,并在报告时捕获最后几条新记录 给我们一个计算和潜在触发的示例,我们可以更好地帮助您 如果单个事务进入一个组触发器运行,则无法将一组事务分组