通过Linq-to-SQL提高查询性能以订购记录

时间:2011-07-15 09:41:27

标签: sql-server performance linq-to-sql datatable iorderedenumerable

我正在使用查询从名为customers的表中获取记录,我想按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 vs DataTable有什么(dis)优势?

请告诉我你应该怎么做。

1 个答案:

答案 0 :(得分:0)

我会说这取决于SQL Server的索引,哪个更快。例如,如果SQL Server被索引以便它可以快速进行排序(或者数据非常小),那么数据表就可以了。

我通常希望SQL服务器在这方面比.NET代码更高效。

虽然在一般建筑上。如果排序是一个UI问题(从你的问题中不清楚它是否是),那么订购客户端更有意义,特别是如果你将在别处使用数据表(可能以不同的顺序)。