C'est ma requête
SELECT TOP 3 guid FROM eventlog WHERE (guid > 2291399 AND batch_uid = -1) ORDER BY date_created ASC
Je cours ce qquery dans un slider de procédure stockée environ 25 fois. Ce qui provoque le SP à courir pendant 10 secondes plus.
Quelqu'un peut-il me conseiller où je pourrais optimiser ma requête?
J'ai essayé les index suivants
CREATE INDEX eventlog_003 ON eventlog (batch_uid,date_created,guid); CREATE INDEX eventlog_004 ON eventlog (date_created,guid); CREATE INDEX eventlog_005 ON eventlog (guid,batch_uid,date_created ASC); CREATE INDEX eventlog_006 ON eventlog (batch_uid,date_created ASC,guid);
Voici quelques statistics.
Il semble que la plupart du time est passé à faire cette parsing d'index. J'ai trouvé quelques infos dans cette question . En bref, il est préférable d'get la database pour essayer de faire une search d'index plutôt qu'une parsing (une parsing nécessitant la vérification des champs de la table qui ne sont pas dans l'index). Il semblerait que l'une des façons de réduire le time nécessaire serait de créer un index ascendant sur guid
, batch_uid
et date_created
.