zoukankan      html  css  js  c++  java
  • 数据库分页总结

    关于数据库分页总结
    1.中小型数据库可使用数据库分页
      Grid1.RecordCount = GetTotalCount();
      table = GetPagedDataTable(Grid1.PageIndex, Grid1.PageSize);
    (1)指定数据的总数
      Grid1.RecordCount = GetTotalCount();
      private int GetTotalCount()
      {
        return DataSourceUtil.GetDataTable2().Rows.Count;
      }
    (2)获取分页数据
      

    //参数 第N页,每页总数
      private DataTable GetPagedDataTable(int pageIndex, int pageSize)
      {
        DataTable source = DataSourceUtil.GetDataTable2();
    
        DataTable paged = source.Clone();
    
        int rowbegin = pageIndex * pageSize;
        int rowend = (pageIndex + 1) * pageSize;
        if (rowend > source.Rows.Count)
        {
          rowend = source.Rows.Count;
        }
    
        for (int i = rowbegin; i < rowend; i++)
        {
          paged.ImportRow(source.Rows[i]);
        }
    
        return paged;
        }

    2.大型数据表的分页(因1会读取表内所有的记录,故用SQL语句改进)
    思路:
    (1)子查询获取第N-1页的数据
    (2)外查询使用NOT IN 从子查询中获取数据

    string sql = "SELECT TOP " + pageSize + " * from tb_queue WHERE qu_id NOT IN " +
    "(SELECT TOP " + pageIndex * pageSize + " qu_id from tb_queue order by qu_id desc) " +
    " order by qu_id desc";

    3.对于2的再次改进

    string sql2;
    if (pageIndex * pageSize > 0)
    {
       sql2 = "SELECT TOP " + pageSize + " * from tb_queue WHERE qu_id < " +
           " (select MIN(qu_id) from (SELECT TOP " + pageIndex * pageSize + " qu_id from tb_queue order by qu_id desc) as qu_newid) " +
           " order by qu_id desc";
    }
    else {
      sql2 = "SELECT TOP " + pageSize + " * from tb_queue order by qu_id desc ";
    }

    4.SQL2005及更高版本,可以使用 row_number来排序

    思路:给每条记录编好顺序号,然后根据顺序号来得到   (n-1)* pagesize +1 到 n* pagesize之间的数据

      select * from

                 ( select *,RN=row_number() over (order by rid asc) from tb_record ) as t 

            where t.RN between  ((n-1)* pagesize +1) and    n* pagesize

    5.存储过程

    待完结…………

  • 相关阅读:
    vector
    vector-back
    vector-back
    vector-begin
    vector-begin
    vector-at
    vector-at
    Vector-assign
    Vector-assign
    Vector-Constructors
  • 原文地址:https://www.cnblogs.com/boentouch/p/12442515.html
Copyright © 2011-2022 走看看