我在我的asp.net mvc应用程序中使用Entity Framework 6。 我有一个复杂的数据库查询,导致大约15个表。 查询包括搜索和过滤。此查询执行很慢(本地计算机上大约800毫秒)。
query.Include(i => i.Customer)
.Include(i => i.Address)
...
.Include(i => i.Photos)
.Select(x => new {
...
x.Address.City,
CustomerName = i.Customer != null ? i.Customer.Name : "",
...
});
...
//searching & filtering
// searchFilter.PropertyName and searchFilter.PropertyValue - strings!
// for example searchFilter.PropertyName = 'CustomerName'
query = query.Where(String.Format("{0} == {1}", searchFilter.PropertyName, searchFilter.PropertyValue));
// PageIndex = 20
query = query.Skip(PageIndex * PageSize).Take(PageSize)
...
var result = query.ToList();
...
问题:
还有其他方法吗?
答案 0 :(得分:0)
一些评论:
include(i => i.Address)
选择x.Address.City
,也不需要测试where子句中的任何地址属性CustomerName = i.Customer != null ? i.Customer.Name : ""
就可以替换为CustomerName = i.Customer.Name ?? ""
不确定这会对性能产生重大影响,但......
否则,通常情况下,索引创建是提高性能的途径。