/ / Що є більш ефективним, переглядаючи DataTable або більше дзвінків до бази даних? - c #, asp.net, продуктивність, цикли

Що більш ефективно, цикл через DataTable або більше викликів з базами даних? - c #, asp.net, продуктивність, цикли

В основному у мене є 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 цей процес? Я ніколи не користувався ним, але просто перегляд навколо цього виглядає як щось, що може допомогти.

Відповіді:

4 для відповіді № 1

Здійснюйте якомога менше дзвінків до БД. Ви будете ефективнішими в 99,9% випадків. (Загальне правило кодування)