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:
CREATE INDEX devices_idx_notify_userid_ostype ON Devices (Notify,UserId,OSType);
CREATE INDEX trackerlocations_idx_receivedtime_trackerid ON TrackerLocations (ReceivedTime,TrackerId);
CREATE INDEX trackers_idx_trackerid ON Trackers (TrackerId);
SELECT
tl.*,
d.*
FROM
TrackerLocations AS TrackerLocations1
INNER JOIN
Trackers t
ON TrackerLocations1.TrackerId = t.TrackerId
INNER JOIN
Devices d
ON t.UserId = d.UserId
LEFT JOIN
TrackerLocations AS TrackerLocations2
ON (
TrackerLocations2.TrackerId = TrackerLocations1.TrackerId
)
AND (
TrackerLocations1.ReceivedTime < TrackerLocations2.ReceivedTime
)
WHERE
(
1 = 1
AND TrackerLocations1.ReceivedTime >= DATEADD(MINUTE, -2, GETUTCDATE())
AND d.OSType <> 3
AND d.Notify = 1
)
AND (
TrackerLocations2.ReceivedTime IS NULL
)