Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Кой е най-добрият начин за извършване на страниране на SQL Server?

ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE]
    @FromRow int = 1000000,
    @PgSize int = 10
AS
BEGIN
    ;WITH RecordsRN AS
    (
        select ID, colValue, ROW_NUMBER() over(order by colvalue) as Num from tblTest
    )
    SELECT ID Value, colValue Text FROM RecordsRN WHERE Num between @FromRow AND (@[email protected])
END

това е заявката, която използвам за страниране. използвайте го и ще получите желаните 10 записа за 4-5 секунди. Получавам 10 записа за 3 секунди и общите записи в моята база данни са 10 милиона, не използвайте топ 10, той ще донесе само едни и същи 10 записа всеки път. в моя случай поддържам размера на страницата и номера на началния ред (@FromRow) в сесията и предавам тези две стойности на дадената по-долу съхранена процедура и получавам резултата. Освен това, ако използвате SQL 2012, може да искате да използвате OFFSET и Извличане на следващите 10 реда нещо подобно. потърсете в google за ключова дума OFFSET и ще видите желания резултат отгоре.

благодаря



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализиране на данни на Salesforce с курсор на SQL Server

  2. Клауза WHERE срещу ON при използване на JOIN

  3. Връщане на списък със сървърни тригерни събития в SQL Server

  4. SQL Server произволно сортиране

  5. Конкатениране на стойности въз основа на ID