나는 쿼리를 사용해야하는 120 만 개 이상의 큰 테이블을 가지고 있습니다. 같은 필드에 포함됩니다. 목록을 사용하여 쿼리해야하는 필드 combine_name이 있습니다. 성능을 확인하기위한 하나의 필드만으로이 작업을 수행하려고 노력 중이며 코드에 반영되어 있습니다. 내가 쓰는 방식은 너무 오래 걸린다. 테이블을 메모리에로드 할 필요가없는 방법이 있습니까?큰 테이블 및 목록 개체를 쿼리하는 방법
JDataClassDataContext db = new JDataClassDataContext();
var fullName = txtSearchBox0.Text.Trim();
List<string> firstName = new List<string>(txtSearchBox1.Text.Split(',').Select(x => Convert.ToString(x)).ToList());
var rows = (from c in db.defendants_ALLs.AsEnumerable()
where c.combined_name.Contains(fullName)
&& firstName.Any(n => c.combined_name.Contains(n))
select c).ToList();
dlSearch.DataSource = rows;
dlSearch.DataBind();
당신은 데이터베이스 테이블의 필드로 fullname을 가질 수 없습니까? 현재 설정에서 rdbms가 인덱스를 사용할 방법이 없습니다. 전체 테이블 스캔으로 넘어져 성능이 저하됩니다. – rene
fullname은 사용자가 입력해야하는 웹 페이지의 필드이므로 데이터베이스에 입력 할 수 없습니다. 필자는 txtSearch0 및 txtSearch1 필드에 각각 올바른 이름의 combine_name을 검색하는 입력이 필요합니다. 예를 들어 txtSearch0 = 'smit'이고 txtSearch1 = 'joh, jon, j'입니다. 모든 다른 철자법과 임의의 j를 얻기 위해서. 스미스는 우연히 우리가 얻는 데이터에있을 것입니다. 저장 프로 시저가이 시점에서 가장 좋은 옵션 일 수 있다고 생각합니다. – korrowan