我只是寫一個測試應用程序,以瞭解如何優化大量記錄的搜索,以顯示在gridview中。如何優化我的搜索?
目前,我有一個測試表,有20,000個記錄(目前沒有索引),我正在尋找在我的gridview中以20個批次顯示記錄。我不確定如何做到這一點,但我試圖理解它背後的理論。
namespace TestingIndexes
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnStart_Click(object sender, EventArgs e)
{
gvResults.DataSource = GetContacts();
gvResults.DataBind();
}
private List<Contact> GetContacts()
{
List<Contact> contacts = new List<Contact>();
DataClasses1DataContext dc = new DataClasses1DataContext();
// Track time elapsed
Stopwatch sw = new Stopwatch();
sw.Start();
var result = from c in dc.GetTable<Contact>()
select c;
sw.Stop();
ltMessage.Text = "<p>Time elapsed: " + sw.ElapsedMilliseconds + "</p>";
if (result.Count() > 0)
contacts = result.ToList<Contact>();
return contacts;
}
}
}
正如你可以看到,這是一個使用LINQ一個非常簡單的查詢,我敢肯定,我不希望每次都帶來20,000條記錄到內存中,以便將其綁定到GridView。什麼是替代雖然?我想我要做的是最終查詢數據庫以找出有很多記錄,但是一次只能在gridview中顯示20條記錄。這是由SQL Server處理的東西嗎?我確信必須有關於我想要做的事情的文章,但我不完全確定我應該尋找什麼。任何指向教程的指針或鏈接都會非常有幫助!
任何人都可以幫助指向正確的方向嗎?
傳呼......... – 2012-03-28 12:14:31
作爲使用代碼的一個附註,問題實際上會爲所有數據查詢數據庫兩次,一次用於「Count()」操作,一次用於「ToList()」操作。我的規則是從來沒有(如果可以避免)使用擴展方法'Count()' – Magnus 2012-03-28 12:47:19
那麼如何檢查有沒有使用.Count()返回的記錄? – alimac83 2012-03-28 15:26:19