SQL Server

时间:2017-07-28 08:05:31

标签: sql-server sql-delete database-administration

我有一个使用Entity框架进行数据库操作的应用程序。在执行删除操作的一个表中,它需要超过3分钟。但其他类似的表格并不需要花费太多时间。我调试了代码并发现代码没有问题。但是在sql server中执行查询花了很多时间。

此问题的任何疑难解答步骤/根本原因?

我的表格如下,

Id (PK,uniqueidentifier,not null)
FirstValue(real,not null)
SecondValue(real,not null)
ThirdValue(real,not null)
LastValue(int,not null)
Config_Id(FK,uniqueidentifier,not null)

查询执行计划 enter image description here

1 个答案:

答案 0 :(得分:0)

有些事情并没有在这里加起来,我们还没有看到全貌......

有很多东西可以减缓删除(通常):

  • 删除大量记录(我们知道此处并非如此)
  • 许多索引(我怀疑这是这里的情况)
  • 死锁和阻塞(这是开发或生产数据库吗?)
  • 触发器
  • 级联删除
  • 需要增长的事务日志
  • 要检查的许多外键(我怀疑这可能也会发生)

你能给我们一个关于" View Dependencies"的截图。 SSMS中的功能?要获得此功能,请右键单击对象资源管理器中的表,然后选择View Dependencies

此外,您是否可以在master数据库上打开查询,运行以下查询并发布结果:

SELECT name, value, value_in_use, minimum, maximum, [description], is_dynamic, is_advanced
FROM sys.configurations WITH (NOLOCK)
where name in (
    'backup compression default',
    'clr enabled',
    'cost threshold for parallelism',
    'lightweight pooling',
    'max degree of parallelism',
    'max server memory',
    'optimize for ad hoc workloads',
    'priority boost',
    'remote admin connections'
)
ORDER BY name OPTION (RECOMPILE);

SELECT DB_NAME([database_id]) AS [Database Name], 
       [file_id], [name], physical_name, [type_desc], state_desc,
       is_percent_growth, growth,
       CONVERT(bigint, growth/128.0) AS [Growth in MB], 
       CONVERT(bigint, size/128.0) AS [Total Size in MB]
FROM sys.master_files WITH (NOLOCK)
ORDER BY DB_NAME([database_id]), [file_id] OPTION (RECOMPILE);