2017-08-30 102 views
0

我有一個複雜的選擇JOIN和UNION,它需要很長的時間,所以我決定測試它在一個簡單的選擇,但是這個選擇仍然需要時間來執行。我已保存的執行計劃here簡單的選擇需要很多時間來執行

的代碼僅爲

SELECT pchrgqty,pchrgup,pcchrgamt FROM 
hdocord 
WHERE acctno = '2014-000136557' 

但它需要1分11秒執行

如何使這個更快? 爲什麼它很慢?

+1

它正在掃描整個表格。在'acctno'上創建一個索引,以便尋找。 (另外,考慮通知此表的設計者,SQL Server最多支持128個字符的名稱,因此沒有理由不可讀取這些名稱,除非您必須與某種舊式系統兼容。) –

+0

@JeroenMostert i無法訪問數據庫。我想問如何爲'acctno'添加索引?所以我可以嘗試添加它。你可以提供它作爲答案 – Martin

回答

1

你可以嘗試添加只是運行該SQL語句缺乏指數:

CREATE NONCLUSTERED INDEX ix_hdocord_acctno ON hdocord 
(
    acctno ASC 
) 
ON [PRIMARY] 

,如果他們沒有給你足夠的權限,它就會失敗。