Skip to main content

Efficiently Paging Through Large Amounts of Data (PageIndex, Page Size) -SQL Server

In this article you learn how to fetch data according PageIndex and PageSize. In web application, it is much more important to increase webform performance, loadbalance.

In my development experience, some of table hold large amount of records (more than 2GB) and user need to shows records in GridView. But problem is when we select all records and loads in webforms, webform has crashed.

In that case, I will simply solved with Table Variable and using Grid Page Number and Page Size.

1. Create Procedure

CREATE PROCEDURE Load_Data_WithPaging    
      @PageIndex AS INT, /*Selected Row Index of selected grid*/
      @PageSize AS INT, /*Total page size of selected grid*/
      @TotalRecords AS INT OUT      /*used for display virtual page no*/
AS
BEGIN
      SET NOCOUNT ON;
      DECLARE @FromIndex AS INT = 0, @ToIndex AS INT = 0;
      
      
  SET @FromIndex = (@PageIndex * @PageSize) + 1; /*First row no selection*/
  SET @ToIndex = ((@PageIndex * @PageSize) + @PageSize);/*Last row no selection*/
      SET @TotalRecords = 0;
     
      /*Temp Table */
      DECLARE @TempTrans TABLE
      (
            SerialNumber INT,
            Id INT,
            AgentId INT,
            EntryDate DATETIME,
            TransactionCode VARCHAR(50),
            CustomerId INT,
            FromCurrencyId INT,
            SendAmount DECIMAL(20, 4),
            ToCurrencyId INT 
      );
     
      INSERT INTO @TempTrans 
         
      SELECT row_number() over (order by MT.EntryDate DESC) AS SerialNumber
             , MT.Id, MT.AgentId, MT.EntryDate
             , MT.TransactionCode, MT.CustomerId
             , MT.FromCurrencyId, MT.SendAmount
             , MT.ToCurrencyId
       FROM dbo.Mtr_MoneyTransfer MT
       ORDER BY MT.Id DESC
           
      SELECT * FROM @TempTrans
            WHERE SerialNumber BETWEEN @FromIndex AND @ToIndex   
           
      SELECT @TotalRecords = COUNT(*) FROM @TempTrans
     
END;


Second page:

DECLARE @TotalRecords AS INT
EXEC Load_Data_WithPaging 1, 10, @TotalRecords out
SELECT @TotalRecords


Comments

Popular posts from this blog

What is RDBMS?

In our crucial programming world, RDBMS is stand for Relational Database Management Systems is based on the Relational Model that maintain data records and index in tables. Generally, the term "Relations" are maintained in RDMS.  In a relational database,store the data into collection of tables, which might be related by common fields (database table columns). RDBMS also provide relational operators to manipulate the data stored into the database tables. Most RDBMS use SQL as database query language. There are several objects are included in RDBMS like ,Indexes,Synonyms,Tables,Views Clusters,Constraints,Database links,Database triggers. Most popular RDBMS  are Oracle, MS-SqlServer, MySql,DB2. etc.

What are the difference between DDL, DML , DCL and TCL commands?

Database Command Types DDL Data Definition Language  (DDL) statements are used to define the database structure or schema.  -           CREATE - to create objects in the database -           ALTER - alters the structure of the database -           DROP - delete objects from the database -           TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed -           COMMENT - add comments to the data dictionary -           RENAME - rename an object DML Data Manipulation Language  (DML) statements are used for managing data in database. DML commands are not auto-committed. It means changes made by DML command are not permanent to d...

Identify and Delete duplicate Records in SQL Server

      S cenario: I have accumulated data into SQL Server database from three different servers (oracle, O2 and oracle) for a financial reporting. After data accumulated , we found more duplicate rows; business requirement was to remove all duplicate rows because of final data will be import to another system. For this purpose, I want to write script to find out duplicate rows from my table. Finally, I want to delete only duplicate rows not original row. Original row means if i have total 2 rows those same or duplicate, so I want to delete only one row that is duplicate. Let’s go............................ Step 1: Create a student Table below Script: CREATE TABLE [Students] (     [ID] [int] NULL,     [Name] [varchar] ( 50 ) NULL,     [address] [varchar] ( 50 ) NULL,     [contact] [varchar] ( 50 ) NULL,     [email] [varchar] ( 50 ) NULL ...