Повышение производительности запросов для упорядочения записей с помощью Linq-to-SQL - PullRequest
1 голос
/ 15 июля 2011

Я использую запрос для получения записей из таблицы с именами клиентов и хочу упорядочить записи по 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 Ответ

0 голосов
/ 15 июля 2011

Я бы сказал, что от индексации на вашем SQL Server зависит, какая из них быстрее.Например, если SQL Server проиндексирован так, что он может выполнять упорядочение быстро (или данные очень малы), тогда с таблицей данных все в порядке.

В целом я бы ожидал, что сервер SQL будет более эффективнымчем код .NET.

На общей архитектурной ноте.Если упорядочение является проблемой пользовательского интерфейса (это не ясно из вашего вопроса, если это так), то упорядочение на стороне клиента имеет больше смысла, особенно если вы будете использовать таблицу данных в другом месте (потенциально в другом порядке).

...