행을 검색하는 데 사용하는 행 수가 약 50,000 인 DataTable을 가지고 있습니다. Select
에는 와일드 카드 일치를 비롯한 여러 개의 AND
조건이 필요합니다. 나는 놀고 여러 단계에서 동일한 Select
을 수행함으로써 실행 시간을 크게 줄일 수 있지만 AND
명령문의 순서를 변경해도 영향을 미치지 않는다는 것을 알았습니다.DataTable 복수 AND 조건으로 구현 선택
//This takes ~ 750 ms
DataRow[] results = myDataTable.Select("Field1 LIKE '*" + term1 + "*'" +
"AND Field2 = '" + term2 + "'" +
"AND Field3 = '" + term3 + "'");
//This also takes ~750 ms
DataRow[] results2 = myDataTable.Select("Field3 = '" + term3 + "'" +
"AND Field2 = '" + term2 + "'" +
"AND Field1 LIKE '*" + term1 + "*'");
//This takes 0.415 ms
DataTable table1 = myDataTable.Select("Field3 = '" + term3+ "'").CopyToDataTable();
DataTable table2 = table1.Select("Field2 = '" + term2 + "'").CopyToDataTable();
DataRow [] results3 = table2.Select("Field1 LIKE '*" + term1 + "*'");
내 질문은 항상 기록의 수는 단계 사이에 감소 될 것이다 검색 있도록 SELECT
작업이 왼쪽에서 오른쪽으로 AND
조건을 평가하게하는 방법은 무엇입니까? 이것이 시간을 절약 할 수있는 좋은 방법 인 것 같습니다. 당신의 아이디어에 감사드립니다.
팁 팀 Tim에게 감사드립니다. 크게 향상된 성능! – DaveH