In case you have your own slow SQL query, you can optimize it automatically here.
For the query above, the following recommendations will be helpful as part of the SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `Service` ADD INDEX `service_idx_sysid` (`SYSID`);
ALTER TABLE `Trans` ADD INDEX `trans_idx_chargeby_sysid` (`CHARGEBY`,`SYSID`);
ALTER TABLE `trans_workers` ADD INDEX `trans_workers_idx_trans_sysid` (`trans_sysid`);
SELECT
A.scheduled_hours = COALESCE(sum(A.hours),
0),
A.worker_sysid
FROM
(SELECT
DISTINCT B.DateR1,
B.DateR2,
hours = ABS((B.DateR1 - B.DateR2) / 3600),
worker_sysid
FROM
Trans A
JOIN
trans_workers
ON A.SYSID = trans_workers.trans_sysid
OUTER APPLY (SELECT
DateR1 = MIN(TRANS_START),
DateR2 = MAX(TRANS_END),
Trans.SYSID FROM
Trans
LEFT JOIN
Service
ON Service.SYSID = Trans.SERVICESYSID
WHERE
TRANS_START <= A.TRANS_END
AND TRANS_END >= A.TRANS_START
AND TRANS_START IS NOT NULL
AND TRANS_END IS NOT NULL
AND TRANS_START != ''
AND TRANS_END != ''
AND Trans.CHARGEBY IN ('Hours', 'Hour')
AND COALESCE(Service.overnight, 0) != 1
AND TRANSDATE BETWEEN 80387 AND 80400
GROUP BY
Trans.SYSID
ORDER BY
NULL) B
) A
WHERE
A.worker_sysid IS NOT NULL
GROUP BY
A.worker_sysid
ORDER BY
A.worker_sysid