Я не думаю, что на самом деле есть ответ на все вопросы, вы должны проверить его и измерить производительность для ваших конкретных обстоятельств.
При выполнении нескольких сложных запросов с объединениями по многим таблицам и т. Д. Мы обнаружили, что гораздо быстрее можно выполнить один большой запрос в наборе данных и затем отфильтровать его так, как нам нужно в памяти.
Большая часть увеличения производительности для нас заключается в том, что мы избегаем многократных обращений к базе данных, что может стать причиной узкого места.
Есть несколько функций SQL, например если вам нужно сделать что-то вроде WHERE LocationId IN (1, 2, 3, 4, 5, 6)
, которое в SQL работает намного хуже, чем dataset.LocationIds.Where(id => myValues.Contains(id))
в C #, для больших наборов данных , то в этой ситуации, если вы измерили это, вы должны найти в -память работает лучше всего.
A SELECT
с простыми условиями WHERE
почти наверняка будет быстрее в SQL. Вот почему вы должны оценивать каждый сценарий, тестировать и измерять при необходимости.