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 `subset_all` ADD INDEX `subset_all_idx_ratingdatetime` (`RatingDateTime`);
SELECT
((SELECT
sum(LM)
FROM
(SELECT
sum(value) LM
FROM
(SELECT
subset_all.segmentid,
subset_all.rating,
subset_all.RatingDateTime,
subset_all.value,
row_number() OVER (PARTITION
BY
segmentid
ORDER BY
subset_all.RatingDateTime DESC) AS rn
FROM
subset_all
WHERE
subset_all.RatingDateTime < date('2014-10-20'))
WHERE
rating >= 7
AND rn = 1
UNION
ALL SELECT
sum(value) LM
FROM
(SELECT
subset_all.segmentid,
subset_all.rating,
subset_all.RatingDateTime,
subset_all.value,
row_number() OVER (PARTITION
BY
segmentid
ORDER BY
subset_all.RatingDateTime DESC) AS rn
FROM
subset_all
WHERE
subset_all.RatingDateTime < date('2014-10-20'))
WHERE
rating >= 8
AND rn = 1
)
) + (
SELECT
sum(LM)
FROM
(SELECT
sum(value) LM
FROM
(SELECT
subset_all.segmentid,
subset_all.RatingDateTime,
subset_all.value,
row_number() OVER (PARTITION
BY
segmentid
ORDER BY
subset_all.RatingDateTime DESC) AS rn
FROM
subset_all
WHERE
subset_all.RatingDateTime < date('2014-10-20'))
WHERE
rn = 1
)))