2017-07-28 56 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);