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 tab1_idx_col1 ON tab1 (col1);
CREATE INDEX tab2_idx_col2 ON tab2 (col2);
SELECT
*
FROM
(SELECT
Alls.*,
ROW_NUMBER() OVER (ORDER
BY
Alls.col1 DESC) AS RowNum,
COUNT(*) OVER () AS TotalCount
FROM
tab1 AllS
LEFT JOIN
tab2 FF
ON Alls.col2 = FF.col2
WHERE
(
(
(
@par1 IS NULL
AND 1 = 1
)
OR (
@par1 IS NOT NULL
AND '1' = fun1(col3, ',', @par1, 'exact contains')
)
)
AND (
(
@par2 IS NULL
AND 1 = 1
)
OR (
@par2 IS NOT NULL
AND (
Alls.col1 BETWEEN CONVERT(DATETIME, @par2) AND CONVERT(DATETIME, @par7)
)
)
)
AND (
(
@par3 IS NULL
AND 1 = 1
)
OR (
@par3 IS NOT NULL
AND col4 IN (
SELECT
CONVERT(INT,
Item)
FROM
dbo.Split(@par3,
',')
)
)
)
AND (
(
(
@par4 IS NULL
AND col5 = NULL
)
OR (
@par4 IS NOT NULL
AND col5 = @par4
)
)
OR (
(
@par5 IS NULL
AND col6 = NULL
)
OR (
@par5 IS NOT NULL
AND col6 = @par5
)
)
OR (
(
@par6 IS NULL
AND col7 = NULL
)
OR (
@par6 IS NOT NULL
AND col7 = @par6
)
)
AND (
(
@par8 IS NULL
AND 1 = 1
)
OR (
@par8 IS NOT NULL
AND col8 IS NULL
)
)
AND (
(
(
@par9 IS NULL
AND 1 = 1
)
OR (
@par9 IS NOT NULL
AND col9 LIKE '%' + @par9 + '%'
)
)
OR (
(
@par9 IS NULL
AND 1 = 1
)
OR (
@par9 IS NOT NULL
AND col8 = @par9
)
)
)
)
)
AND col10 = 1
AND col11 IS NULL
) AS List
WHERE
RowNum BETWEEN @startRowIndex AND (
@startRowIndex + @pageSize
) - 1
ORDER BY
List.col1 DESC