哪个效率更高,通过DataTable循环或更多数据库调用?

基本上,我有一个DataTable,其中的行包含零件号,而两列则包含有关零件的信息.

为了将这些信息与我们数据库中的数据进行比较,我确定我有两个选择之一.

选项1-遍历每一行并选择数据

void CompareData(DataTable dt) {
    foreach (DataRow entry in dt.Rows) {
        //select that row
        DataRow dbEntry = ExecuteQuery("SELECT * FROM Parts WHERE partno='" + entry["partno"] + "'").Rows[0];
        if (dbEntry["info1"] == entry["info1"]) {
            //do something
        } else {
            //do something
        }
    }
}

选项2-一次选择所有数据并通过循环比较

void CompareData(DataTable dt, string[] parts) {
    DataTable dbEntries = ExecuteQuery("SELECT * FROM Parts WHERE partno IN('" + String.Join(parts, "','") + "')");
    foreach (DataRow entry in dt.Rows) {
        foreach (DataRow dbEntry in dt.Rows) {
            if (dbEntry["partno"] == entry["partno"]) {
                if (dbEntry["info1"] == entry["info1"]) {
                    //do something
                } else {
                    //do something
                }
            }
        }
    }
}

它们似乎都效率很低,所以我不确定该怎么做. LINQ会加快这个过程吗?我从来没有真正使用过它,只是浏览它看起来可能会有所帮助.

解决方法:

进行尽可能少的数据库调用.您将有99.9%的时间效率更高. (编码的一般规则)

上一篇:javascript-循环到单个语句


下一篇:php-将对象数组减少到“最佳10”