Quantcast
Channel: Forum SQL Server Database Engine
Viewing all articles
Browse latest Browse all 15889

index is not working while using ROW_NUMBER

$
0
0
Hi,
I have used Row_Number() to implement the paging in my stored procedure. Paging is working fine. But problem is, after implementing the Row_Number(), indexes does not work & a Clustered index SCAN happens even if I use the primary key column in order by section.
below is the sample query:

SELECT TOP (@insPageSize) A.RowNum, A.AdID, A.AdTitle, A.AdFor, A.AdCondition,
    A.AdExpPrice, A.CreatedDate, A.ModifiedDate, A.AdUID
    FROM
    (
    SELECT ROW_NUMBER() OVER (ORDER BY vaa.AdID DESC) AS RowNum,
        vaa.AdID, vaa.AdTitle, vaa.CityID, vaa.AdFor, vaa.AdCondition,
        vaa.AdExpPrice, vaa.CreatedDate, vaa.ModifiedDate, vaa.AdUID
    FROM Catalogue.vwAvailableActiveAds vaa
    WHERE vaa.CategoryID = @intCategoryID AND vaa.CountryCode = @chrCountryCode
            AND vaa.CreatedDate > DATEADD(dd, -90, GETUTCDATE())
            AND vaa.StateID = @inbStateID AND vaa.CityID = @inbCityID
    ) A
    WHERE A.RowNum > (@insPageSize * (@insPageNo - 1))

if I try to execute only inner query:

     SELECT ROW_NUMBER() OVER (ORDER BY vaa.AdID DESC) AS RowNum,
        vaa.AdID, vaa.AdTitle, vaa.CityID, vaa.AdFor, vaa.AdCondition,
        vaa.AdExpPrice, vaa.CreatedDate, vaa.ModifiedDate, vaa.AdUID
    FROM Catalogue.vwAvailableActiveAds vaa
    WHERE vaa.CategoryID = @intCategoryID AND vaa.CountryCode = @chrCountryCode
            AND vaa.CreatedDate > DATEADD(dd, -90, GETUTCDATE())
            AND vaa.StateID = @inbStateID AND vaa.CityID = @inbCityID

It does not use any index. AdID is primary key & there is another non clustered index which covers all where clause. But index scan occurs.
If I remove the Row_Number() from inner query & check its execution plan, now index works but again StateID & CityID display as "predicate" while they are in non clustered index.

I have read that ">" comes under SARGable, then why StateID & City is not coming in seek predicate list.

Please give me some guidance to solve my both  problems.

Viewing all articles
Browse latest Browse all 15889

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>