Я просто пишу тестовое приложение, чтобы выяснить, как я могу оптимизировать поиск по большому количеству записей, отображаемых в gridview.Как я могу оптимизировать мой поиск?
В настоящее время у меня есть тестовый стол с 20 000 записей (без индексации на данный момент), и я ищу для отображения записей в партиях по 20 в моем gridview. Я не совсем уверен, как это сделать, и я пытаюсь понять теорию, лежащую в ее основе.
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, и я уверен, что я не хочу, чтобы приносить 20000 записей в памяти каждый раз, когда для того, чтобы привязать его к GridView. Какая альтернатива? Я полагаю, что то, что я хочу сделать, в конечном счете, запрашивает базу данных, чтобы узнать много записей, но есть только 20 записей за раз в gridview. Это что-то, что обрабатывается SQL Server? Я уверен, что должны быть статьи о том, что я пытаюсь сделать, но я не совсем уверен, что я должен искать. Любые указатели или ссылки на учебные пособия были бы очень полезны!
Может ли кто-нибудь помочь указать мне в правильном направлении?
paging ......... –
В качестве побочного примечания с использованием кода в вашем вопросе будет фактически запрашивать базу данных дважды для всех данных, один раз для операции «Count()» и один раз для операции «ToList()»). Мое правило никогда (если его можно избежать) используйте метод расширения 'Count()' – Magnus
Итак, как бы вы проверили, что были возвращены записи без использования .Count()? – alimac83