c# - 如何提高从数据库中获取大量数据的 Select 查询的性能

标签 c# asp.net sql-server

我想在现场获取大量数据(大约 19000 条记录)并在数据列表控件上显示。 我的数据列表有分页功能,第一次我在数据列表上只显示 6 条记录。 然后他的用户可以转到第 2 页和第 3 页,然后...... 获取所有记录到数据表获得更多时间。 请帮助我详细说明我应该在 sql server 中使用什么。

private void FetchDataToDataList()
{
    DataTable dt = new DataTable();
    if (Cache["DataTable-cach"] == null)
    {
        String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        SqlCommand cmd = new SqlCommand("SELECT dbo.table_name.field_name, FROM dbo.table_name ", con);
        con.Open();
        dt = new DataTable("T");
        string startime = System.DateTime.Now.ToLongTimeString();
        dt.Load(cmd.ExecuteReader());
        string endtime = System.DateTime.Now.ToLongTimeString();
        Cache.Insert("DataTable-cach", dt, null, DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration);
        con.Close();
    }
    else 
    {
        dt = ((DataTable)Cache["DataTable-cach"]);
    }

    // pagedDS is data list control
    PagedDataSource pagedDS = new PagedDataSource();
    pagedDS.DataSource = dt.DefaultView;
    pagedDS.AllowPaging = true;
    pagedDS.PageSize = 6;
    pagedDS.CurrentPageIndex = CurrentPage;
    dlPaging.DataSource = pagedDS;
    dlPaging.DataBind();
    lblCurrentPage.Text =  pagedDS.PageCount.ToString() +" صفحه    " +  (CurrentPage + 1).ToString()+ " از " ;
    // Disable Prev or Next buttons if necessary
    cmdPrev.Enabled = !pagedDS.IsFirstPage;
    cmdNext.Enabled = !pagedDS.IsLastPage;
}

最佳答案

根据 SQL Server 版本,您应该只根据需要从数据库中请求尽可能多的记录。

在 SQL Server 2012 中,您可以使用 OFFSETFETCH NEXT 关键字。在早期版本中,使用 ROW_NUMBER

关于c# - 如何提高从数据库中获取大量数据的 Select 查询的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322251/

相关文章:

c# - 将字典属性作为对象访问

c# - p/invoke C函数返回指向结构的指针

c# - winforms如何在TableLayoutPanel中绘制(fillRectangle)单个单元格?

c# - 缓存数据;网络

sql-server - 如何使用输出和退出代码运行 SQL Server 代理 Powershell 脚本

c# - .NET https身份验证(Pingdom API)

c# - System.IdentityModel.Metadata 和 X509SecurityToken 在 ASP.NET Core 中不可用

asp.net - 让另一个程序员接管现有项目

javascript - 在弹出窗口中显示信息

c# - 确定 SQL Server 查询(存储过程)结果类型