Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何高效地刷新表数据_Sql_Database - Fatal编程技术网

Sql 如何高效地刷新表数据

Sql 如何高效地刷新表数据,sql,database,Sql,Database,我有几张分析表,每隔几天就会刷新一次。所谓刷新,我的意思是可能有一些新记录,一些记录需要删除,一些记录需要更新,并且没有特定的标识符 因此,我有以下选择: 对于每次刷新,截断整个表并重新加载数据。但如果在新数据加载期间发生任何故障,那么表数据将被破坏,所有分析将显示错误的数据。 另一种选择是在所有分析表中保留一个刷新id,并且在从分析表读取数据时使用最新的刷新id。但这种方法的主要问题是连接和过滤。我们有跨分析表的连接,所以每个连接都应该与刷新连接,否则获取的数据将是错误的,这种方法容易出错。

我有几张分析表,每隔几天就会刷新一次。所谓刷新,我的意思是可能有一些新记录,一些记录需要删除,一些记录需要更新,并且没有特定的标识符

因此,我有以下选择:

对于每次刷新,截断整个表并重新加载数据。但如果在新数据加载期间发生任何故障,那么表数据将被破坏,所有分析将显示错误的数据。 另一种选择是在所有分析表中保留一个刷新id,并且在从分析表读取数据时使用最新的刷新id。但这种方法的主要问题是连接和过滤。我们有跨分析表的连接,所以每个连接都应该与刷新连接,否则获取的数据将是错误的,这种方法容易出错。 我们可以在这些表上创建一个具有动态过滤器的视图吗?在查询这些视图时,我将使用最新的刷新id作为过滤器。
有没有更好的方法将数据刷新到分析表中?请记住,它应该处理任何错误场景,并且不容易出错。

或者,我经常使用的选项:

在其他位置创建表的新版本。 验证结果。 将活动表交换为新版本。 交换可能涉及重命名表或截断并加载原始表。通常,原始内容保存在其他地方

这种方法非常方便,尤其是当创建整个表的逻辑很复杂,难以表示为增量更改时。当表格不可用时,它还可以最大限度地减少停机时间

当您需要更多的最新数据且批处理无法工作时,您希望进行增量更改—无论是因为时间、大小还是成本。许多数据库支持物化视图或复制,从而简化了此过程