我的进程正在从Azure SQL数据库中的表'A'向备份表'B a执行 * 插入 * 操作,该表每天更新[截断和加载]。两个表中都存在列'TSP' [例如value =2022-12- 19 T22:06:01.950994]。一天中插入的所有行的TSP都是相同的。当天晚些时候,我应该删除较旧的数据。当前使用'delete from 'B',其中TSP〈a today-1day'逻辑是否有办法使用索引或其他方法优化此删除操作?
SSMS建议在表.TSP列上创建非聚集索引。我测试了它,但似乎没有太大的区别。如果这是数据:50 mil TSP 1 50 mil TSP 2 50 mil TSP 3我的期望是它会跳过扫描TSP 2,TSP 3行并删除TSP 1。然而,如果表没有索引,它将需要扫描所有150 mil行。
1条答案
按热度按时间yhuiod9q1#
批处理删除操作利用视图来简化执行计划,这可以使用快速有序删除操作来实现。这是通过刷新表一次来实现的,这反过来又减少了所需的I/O量。
以下是查询示例:-
选项1:-使用CTE
选项2:-使用SQL视图
**参考1:**John Sansom在快速SQL服务器删除上使用的article。
**参考2:**类似SO thread。