我有一个包含大约 50,000 行的 DataTable,用于DataTable.Select
从中检索行。Select
需要多个条件,AND
包括通配符匹配。我玩过,发现通过Select
多步执行相同的操作,可以大大减少执行时间,但更改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
看起来这可能是一个很好的节省时间的方法。谢谢你的想法。