使用Linq时,SQL View是否比Table更快?

时间:2012-10-26 15:27:48

标签: c# sql-server wpf linq view

我的WPF应用程序有一个用于选择客户的查找屏幕。 customer表包含近10,000条记录。使用我的Linq查询加载和过滤记录时非常慢(我没有对记录进行任何排序)。有没有办法提高速度?听说过使用索引视图。有人可以提出一些想法吗?

lstCustomerData = dbContext.customers.Where(c => c.Status == "Activated").ToList();
            dgCustomers.ItemsSource = lstCustomerData;

过滤

 string searchKey = TxtCustName.Text.Trim();

            var list = (from c in lstCustomerData
                        where (c.LastName == null ? "" : c.LastName.ToUpper()).Contains(searchKey.ToUpper())
                        select c).ToList();
            if (list != null)
                dgCustomers.ItemsSource = list;

1 个答案:

答案 0 :(得分:0)

取决于什么是慢。 SQL查询速度慢吗? UI渲染速度慢吗?你在内存中排序/查找还是回到数据库?

你应该剖析你的应用程序,找出最慢的部分,然后再解决这个问题。

如果您添加的Linq查询速度很慢,那么向数据库中的Status列添加索引可能会有所帮助。

您可以通过更改Where条款获得一些改进:

var list = (from c in lstCustomerData
            where (c.LastName != null && c.LastName.ToUpper()).Contains(searchKey.ToUpper())
            select c).ToList();
if (list != null)
    dgCustomers.ItemsSource = list; 

因为它不必比较空字符串。但是,如果你的NULL记录很少,那么这可能不会有多大帮助。

但是,在这种情况下,所有过滤都在内存中完成,因此除非您将过滤推送回源存储库,否则使用DB中的索引视图将无济于事。