gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:46 25 4
gpt4 key购买 nike

我想在现场获取大量数据(大约 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com