Increase performance of SQL


What I try to accomplish is to load data per page. In this example I want 5 records on a page. If @SkipPages is 2 then 10 records will be skipped (equals 2 pages). Below you find a SQL view which performs pretty bad. The higher value @SkipPages is set, the longer it takes to process.
Is there a way to speed this up?
Declare @Zoektekst nvarchar(255),
        @RecordsOnPage int,
        @SkipPages int
SET @Zoektekst = N'%Merlijn%'
SET @RecordsOnPage = 5
SET @SkipPages = 2
SELECT TOP (@RecordsOnPage) Z1.ID, Z1.GevondenTekst, Z1.Herkenningstekst, Z1.Veldnaam, Z1.Tabel, Z1.VeldType, Z1.IsVerwijderd
FROM dbo.vwZoekFunctie AS z1 
WHERE GevondenTekst like @Zoektekst 
  (SELECT TOP (@SkipPages * @RecordsOnPage) ID FROM dbo.vwZoekFunctie AS Z2
         WHERE GevondenTekst like @Zoektekst 
         AND Z1.Tabel = Z2.Tabel

Open in new window

Stef MerlijnDeveloperAsked:
Who is Participating?
Nakul VachhrajaniConnect With a Mentor Technical Architect, Capgemini IndiaCommented:
What you are looking for are paging mechanisms. The SQL 2008 and SQL 2012 methods are demonstrated here:

If you are on SQL 2012, recommend using the OFFSET...FETCH method because it is more readable and efficient.
Olaf DoschkeConnect With a Mentor Software DeveloperCommented:
What version of MSSQL is this?

In 2012 you can make use of OFFSET and FETCH:

...ORDER BY something
OFFSET @SkipPages*@RecordsOnPage ROWS

Open in new window

You use this instead of TOP, not additionally.

Bye, Olaf.
Olaf DoschkeSoftware DeveloperCommented:
Besides the new feature the classic way is to fetch bottom 5 of top 15, for example. To get bottom 5 of something, you order inverse and take top 5 of that, so that's SELECT TOP 5 FROM (SELECT TOP 15 ORDER BY something ASC) tmpresult ORDER BY something DESC. That's way faster than a NOT IN subquery.

Bye, Olaf.
Stef MerlijnDeveloperAuthor Commented:
I'm one SQL Server 2008 and on 2014, dependent on the customer. So I need a solution that works for both.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.