2017-08-30 100 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] 

,如果他们没有给你足够的权限,它就会失败。