【发布时间】:2019-07-09 09:15:58
【问题描述】:
我在同一张表上运行 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(预计时间不到一分钟)
【问题讨论】:
-
SO 的离题 - 属于 dba。而且不知道表的DDL,不看执行计划,谁也帮不上忙。如果表有触发器或索引视图,则包括这些。
标签: sql-server tsql sql-delete query-performance