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 `batchactionhistory` ADD INDEX `batchactionhistory_idx_batchactionid_batchid` (`batchactionid`,`batchid`);
ALTER TABLE `batches` ADD INDEX `batches_idx_id_statusid` (`id`,`statusid`);
ALTER TABLE `bylines` ADD INDEX `bylines_idx_id` (`id`);
ALTER TABLE `itembylines` ADD INDEX `itembylines_idx_itemid` (`itemid`);
ALTER TABLE `itemorganisationissues` ADD INDEX `itemorganisationis_idx_itemorganisationid` (`itemorganisationid`);
ALTER TABLE `itemorganisationmessages` ADD INDEX `itemorganisationme_idx_itemorganisationid` (`itemorganisationid`);
ALTER TABLE `itemorganisations` ADD INDEX `itemorganisations_idx_itemid` (`itemid`);
ALTER TABLE `itemorganisationsources` ADD INDEX `itemorganisationso_idx_itemorganisationid` (`itemorganisationid`);
ALTER TABLE `items` ADD INDEX `items_idx_statusid_isrelevant` (`statusid`,`isrelevant`);
ALTER TABLE `lookup_countries` ADD INDEX `lookup_countries_idx_id` (`id`);
ALTER TABLE `lookup_mediachannels` ADD INDEX `lookup_mediachanne_idx_id` (`id`);
ALTER TABLE `lookup_messages` ADD INDEX `lookup_messages_idx_id` (`id`);
ALTER TABLE `lookup_messagetypes` ADD INDEX `lookup_messagetype_idx_id` (`id`);
ALTER TABLE `lookup_sourcetypes` ADD INDEX `lookup_sourcetypes_idx_id` (`id`);
ALTER TABLE `profileresults` ADD INDEX `profileresults_idx_itemid` (`itemid`);
ALTER TABLE `profiles` ADD INDEX `profiles_idx_id` (`id`);
ALTER TABLE `projectissues` ADD INDEX `projectissues_idx_id` (`id`);
SELECT
mc.name AS MediaName,
lcc.name AS Country,
i.overridedate AS Date,
oi.rating,
bl1.firstname + ' ' + bl1.surname AS Byline,
b.id BatchNo,
i.numinbatch ItemNumberInBatch,
bah.changedatutc AS BatchDate,
pri.code AS IssueNo,
pri.name AS Issue,
lm.neptunemessageid AS MessageNo,
lmt.name AS MessageType,
bl2.firstname + ' ' + bl2.surname AS SourceFullName,
lst.name AS SourceTypeDesc
FROM
profiles P
INNER JOIN
profileresults PR
ON P.id = PR.profileid
INNER JOIN
items i
ON PR.itemid = I.id
INNER JOIN
batches b
ON b.id = i.batchid
INNER JOIN
itemorganisations oi
ON i.id = oi.itemid
INNER JOIN
lookup_mediachannels mc
ON i.mediachannelid = mc.id
LEFT OUTER JOIN
lookup_countries lcc
ON lcc.id = mc.countryid
LEFT OUTER JOIN
itembylines ib
ON ib.itemid = i.id
LEFT OUTER JOIN
bylines bl1
ON bl1.id = ib.bylineid
INNER JOIN
batchactionhistory bah
ON b.id = bah.batchid
INNER JOIN
itemorganisationissues ioi
ON ioi.itemorganisationid = oi.id
INNER JOIN
projectissues pri
ON pri.id = ioi.issueid
LEFT OUTER JOIN
itemorganisationmessages iom
ON iom.itemorganisationid = oi.id
LEFT OUTER JOIN
lookup_messages lm
ON iom.messageid = lm.id
LEFT OUTER JOIN
lookup_messagetypes lmt
ON lmt.id = lm.messagetypeid
LEFT OUTER JOIN
itemorganisationsources ios
ON ios.itemorganisationid = oi.id
LEFT OUTER JOIN
bylines bl2
ON bl2.id = ios.bylineid
LEFT OUTER JOIN
lookup_sourcetypes lst
ON lst.id = ios.sourcetypeid
WHERE
p.id = @profileID
AND b.statusid IN (
6, 7
)
AND bah.batchactionid = 6
AND i.statusid = 2
AND i.isrelevant = 1