数据库分页总结

关于数据库分页总结
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 从子查询中获取数据
SELECT TOP PAGESIZE NEWSTITLE FORM NEWSINFO WHERE NEWSID NOT IN 
  (SELECT TOP (PAGE-1) * PAGESIZE NEWSID FROM NEWSINFO order by NEWSID DESC) 
order by NEWSID DESC 
3.对于2的再次改进
SELECT TOP PAGESIZE NEWSTITLE FORM NEWSINFO WHERE NEWSID < 
  (SELECT MIN(NEWSID) FROM 
    (SELECT TOP (PAGE-1) * PAGESIZE NEWSID FROM NEWSINFO order by NEWSID DESC) 
  AS TB) 
order by NEWSID DESC 
4.存储过程

待完结…………

猜你喜欢

转载自www.cnblogs.com/boentouch/p/12442515.html
今日推荐