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:
SELECT
et.X,
et.Y,
et.EquipID AS ID,
e.EquipmentName AS Name,
e.EquipmentNo,
eg.EquipGroup AS 'Fleet_Name',
et.SpeedOfTheVehicle AS Speed,
et.IgnitionStatus,
convert(varchar,
et.SignalDateTime) AS SignalDateTime,
et.DriverID,
CASE d.DriverName
WHEN '' THEN 'Name'
ELSE d.DriverName END AS DriverName,
CASE isnull(d.EmployeeNo,
'')
WHEN '' THEN '0'
ELSE d.EmployeeNo END AS DriverNo,
CASE isnull(d.LicenseNo,
'')
WHEN '' THEN '0'
ELSE d.LicenseNo END AS LicenseNo,
dbo.GetFilterColorStatusOfEquipment(et.SignalDateTime,
et.SpeedOfTheVehicle,
(SELECT
COUNT(J.JobId)
FROM
tbl_Notification J
INNER JOIN
tbl_NotificationAssign JN
ON JN.NotificationNo = J.NotificationNo
INNER JOIN
dbo.tbl_CustomStatus JS
ON JS.CustomStatusID = J.CustomStatusID
INNER JOIN
dbo.tbl_SystemStatus ss
ON ss.SystemStatusID = JS.SystemStatusID
WHERE
JN.DriverID = et.DriverID
AND ss.SystemStatusID != 9),
et.IgnitionStatus) AS FilterStatus,
e.SerialNo,
e.GPSIMIENO,
'Equipment' TYPE,
etr.Vector,
si.ImgPath AS 'Icon',
et.Address,
etr.EquipTypeID,
si.StatusTypeID,
ss.SystemStatusCode
FROM
dbo.tbl_Equipment e
INNER JOIN
dbo.tbl_EquipmentTrack et
ON et.EquipID = e.EquipID
LEFT OUTER JOIN
dbo.tbl_DriverMaster d
ON et.DriverID = d.DriverID
LEFT OUTER JOIN
dbo.tbl_EquipmentGroup eg
ON eg.EquipGroupID = e.EquipGroupID
LEFT OUTER JOIN
dbo.tbl_EquipmentType etr
ON etr.EquipTypeID = eg.EquipTypeID FULL
OUTER JOIN
dbo.tbl_StatusIMG si
ON etr.EquipTypeID = si.NotificationType
AND si.StatusTypeID = 2 FULL
OUTER JOIN
dbo.tbl_SystemStatus ss
ON ss.SystemStatusID = si.SystemStatusID
WHERE
et.X IS NOT NULL
AND et.Y IS NOT NULL
AND e.EquipmentName IS NOT NULL
AND e.Available = 'Available'
AND (
(
dbo.GetFilterStatusOfEquipment(et.SignalDateTime, et.SpeedOfTheVehicle, (SELECT
COUNT(J.JobId)
FROM
tbl_Notification J
INNER JOIN
tbl_NotificationAssign JN
ON JN.NotificationNo = J.NotificationNo
INNER JOIN
dbo.tbl_CustomStatus JS
ON JS.CustomStatusID = J.CustomStatusID
INNER JOIN
dbo.tbl_SystemStatus ss
ON ss.SystemStatusID = JS.SystemStatusID
WHERE
JN.DriverID = et.DriverID
AND ss.SystemStatusID != 9), et.IgnitionStatus) IN (
SELECT
val
FROM
dbo.split(@filter,
',')
)
)
OR (
@filter = '*'
OR @filter = ''
)
)