J'ai une procédure stockée sur une base de données occupée qui sort constamment haut dans la liste des requêtes coûteuses (d'une certaine manière). La requête est très simple, elle prend un seul paramètre (@ID, int) qui est la clé primaire de la table, et sélectionne l'enregistrement qui correspond à cet ID. La clé primaire est un champ d'identité avec un index clusterisé, donc je suis perplexe quant à la façon d'optimiser cela plus loin?Sql Server requête de requête
La requête est la suivante
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)
Je ne sais pas la meilleure façon d'afficher le plan d'exécution - tout ce qu'il montre est que 100% de l'opération est repris par l'index cluster scan
Pourriez-vous poster le code? –
Pouvez-vous publier la requête et le plan d'exécution? –
quand vous dites que c'était le plus cher, combien lisait-il? À quelle fréquence est-ce appelé? –