我在一个繁忙的数据库中有一个存储过程,它经常成为昂贵查询列表中排名第一的项(远远超过其他查询)。这个查询非常简单,它只需要一个参数(@ID,整数),这个参数是表的主键,并选择与该ID匹配的记录。主键是具有聚集索引的标识字段,所以我不知道如何进一步优化它。
以下是查询语句:
CREATE PROCEDURE [dbo].[P_Call_Get]
@ID int = null
AS
select ID,
AppID,
AgentID,
AgentLogin,
Ext,
VDN,
VDNName,
Skill,
SkillName,
CallFrom,
TelNoFrom,
ParentCallID,
CallStart,
ACWStart,
CallEnd,
Outcome,
StageID,
TxTo,
TxSuccess,
ServiceID,
DiallerID,
CRC,
TSCallID,
CallDirection,
[Manual],
CallBackAgent,
CallBackDateTime,
Notes
from P_Call
where (ID = @ID or @ID is null)
不确定发布执行计划的最佳方式 - 它只显示所有操作都由聚集索引扫描占用了 100%。