Parte del nostro sistema ERP è un sottosistema per l'esecuzione di processi in background. Monitoriamo una varietà di metadati relativi ai nostri lavori in una tabella che include timestamp per i tempi di invio, inizio e fine.
Sto creando un rapporto che mostra le prestazioni del nostro sistema di lavoro, dettagliate per giorno. Un KPI è il numero massimo di lavori in esecuzione contemporaneamente. L'algoritmo che sto attualmente utilizzando è:
dim cnt as integer 'number of overlapping jobs
dim max as integer 'maximum number of jobs running at one time
for each Job where
Job.SubmitTs = today
'bJob is a 2nd instance of Job
for each bJob where
bJob.SubmitTs = today and
bJob.StartTs <= Job.EndTs and
bJob.EndTs >= Job.EndTs
cnt = cCnt + 1
next
if cnt > max then max = cnt
next
Il problema con questo algoritmo è che è molto lento a causa di tutto il loop. Mi stavo chiedendo se c'è un modo più veloce per implementare questo?
Modifica Non riesco a utilizzare le query SQL per accedere ai dati.