Повышение производительности запросов для записей заказов с помощью Linq-to-SQL
Я использую запрос для получения записей из таблицы с именем клиентов, и я хочу упорядочить записи по address, housenumber, surname, name
,
Сначала я использовал это (DataTable)
public CustomerInfo.customers GetCustomers(string zipcode) {
string sql = "select id, name, surname, zipcode, housenumber where zipcode = @_zipcode order by address, housenumber, surname, name";
....
}
Теперь я использую это:
public OrderedEnumerableRowCollection<CustomerInfo.customerRow> GetCustomers(string zipcode) {
string sql = "select id, name, surname, zipcode, housenumber where zipcode = @_zipcode";
....
return (from c in datatable).OrderBy(c => c.Address).ThenBy(....).ThenBy(...);
}
Это правильный способ улучшить производительность...?
Каковы (не) преимущества OrderedEnumerableRowCollection
против DataTable
?
Пожалуйста, дайте мне знать, как вы должны это сделать.
1 ответ
Я бы сказал, что от индексации на вашем SQL Server зависит, какая из них быстрее. Например, если SQL Server проиндексирован так, что он может быстро упорядочить (или данные очень малы), тогда таблица данных в порядке.
Я бы вообще ожидал, что SQL-сервер будет более эффективным в этом, чем код.NET.
На общей архитектурной ноте, хотя. Если упорядочение является проблемой пользовательского интерфейса (это не ясно из вашего вопроса, если это так), то упорядочение на стороне клиента имеет больше смысла, особенно если вы будете использовать таблицу данных в другом месте (возможно, в другом порядке).