2017-07-28 135 views
0

我有一个应用程序正在使用实体框架进行数据库操作。在执行删除操作时,在一张表中需要3分钟以上。但其他类似的桌子并不需要太多时间。我调试了代码,发现代码没有问题。但是在sql server中执行查询花费了很多时间。在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

+0

如何删除你的数据?否则很难回答。 –

+0

有多少外键引用你的表? –

+0

@EvaldasBuinauskas 使用实体框架删除数据。我也查询了一个查询。 DELETE FROM [dbo]。[Values] WHERE [Id] ='a3e57902-f358-4283-978c-37f9cd00793r' GO – LahiruD

回答

0

东西是不添加在这里,我们没有看到全貌......

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

  • 删除了很多纪录(我们知道是不是这里的情况)
  • 许多指标(我怀疑这里是这样)
  • 死锁和阻塞(这是一个开发或生产数据库?)
  • 触发
  • 级联删除
  • 事务日志需要增长
  • 许多外键检查(我怀疑这也可能发生)

你可以PL轻松地给我们一个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);