저는 많은 수의 레코드에서 검색을 최적화하고 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를 사용하여 매우 간단한 쿼리와 나는 내가있는 gridview에 바인딩하기 위해 메모리에 모든 시간 만 개 기록을 데려 싶지 않아 확신 해요. 그래도 대안은 무엇입니까? 내가 뭘 찾고있는 궁극적으로 거기에 많은 레코드를 찾기 위해 데이터베이스를 쿼리하지만, 한 번에 20 레코드를 gridview에 표시됩니다 가정합니다. 이것은 SQL Server에서 처리되는 것입니까? 내가하려는 일에 대한 기사가 있어야한다고 확신하지만, 내가 무엇을 검색해야하는지 완전히 확신하지 못합니다. 튜토리얼에 대한 모든 포인터 또는 링크가 매우 유용합니다!
아무도 올바른 방향으로 나를 가리킬 수 있습니까?
페이징 ......... –
당신이 질문에있는 코드를 사용하는 보조 노트는 실제로'Count()'연산과'ToList()'연산을 위해 한 번씩 모든 데이터에 대해 데이터베이스를 두 번 쿼리합니다. 내 규칙은 절대로 (피할 수 있다면) 확장 메서드'Count()'를 사용하지 않는다. – Magnus
.Count()를 사용하지 않고 레코드가 반환되었는지 어떻게 확인할 수 있을까? – alimac83