首页 > 解决方案 > 高逻辑读

问题描述

我在同一个表上运行 SELECT 和 DELETE 操作,但是在这两个操作中,逻辑读取方式不同,并且此查询的结果在删除数据时花费了更多时间。你能帮我减少删除操作中的逻辑读取吗?

表有超过 1.9 亿行,它将从昨天开始向后保留 90 天的数据。

我在制作 SP 时遇到了这个问题,它将每天删除 1 天的数据(最旧的数据)

我已经检查并完成了必要的索引,我也尝试过禁用索引,但时间仍然要长得多。

选择查询:

SELECT *
FROM [db_name].dbo.[table_name] ldt
WHERE ldt.[DATE]='2019-03-26'

删除查询:

DELETE FROM [db_name].dbo.[table_name]
WHERE [DATE]='2019-03-27'

SELECT 操作的逻辑读取数为:60,383,查询处理时间为 00:00:32.851
DELETE 操作的逻辑读取数为:64,516,671,查询处理时间为 00:10:27.902(预计时间不到一分钟)

标签: sql-servertsqlsql-deletequery-performance

解决方案


你看过带有文件摸索的表分区吗?如果您可以在数据上创建分区,则可以截断特定分区而不是删除它。


推荐阅读