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 `TC33_AuditTrial` ADD INDEX `tc33_audittrial_idx_auditid_transactio_bookingid` (`AuditId`,`TransactionType`,`BookingId`);
ALTER TABLE `TC33_AuditTrial` ADD INDEX `tc33_audittrial_idx_transactiontype_bookingid` (`TransactionType`,`BookingId`);
SELECT
a.BookingId AS BookingId,
CAST(b.TransactionDateTime AS DATE) AS TransactionDate
FROM
TC33_AuditTrial A
JOIN
TC33_AuditTrial b
ON a.AuditId = b.AuditId
WHERE
a.TransactionType = 'S'
AND CAST(a.TransactionDateTime AS DATE) = (
SELECT
CAST(TC33_AuditTrial2.TransactionDateTime AS DATE)
FROM
TC33_AuditTrial AS TC33_AuditTrial2
LEFT JOIN
TC33_AuditTrial AS TC33_AuditTrial3
ON (
a.BookingId = TC33_AuditTrial3.BookingId
AND TC33_AuditTrial3.TransactionType = 'R'
)
AND (
TC33_AuditTrial2.AuditId < TC33_AuditTrial3.AuditId
)
WHERE
(
TC33_AuditTrial2.BookingId = a.BookingId
AND 1 = 1
)
AND (
TC33_AuditTrial3.AuditId IS NULL
)
)
AND a.TransactionValue = (
SELECT
SUM(b.TransactionValue)
FROM
TC33_AuditTrial b
WHERE
a.BookingId = b.BookingId
AND b.TransactionType = 'R'
)