一直主要从事Java和新LINQ所以我需要此查询。我有3个表LINQ到SQL查询优化
1. Products --> ProductID | Name | Price | VendorID
2. Category --> CategoryID | Label
3. SubCategory--> SubCategoryID | Label | ParentID
4. Product_SubCategory_Mapping--> ProductID | SubCategoryID
5. Vendor --> VendorID | VendorName
我想沿着选择从产品表中所有产品的性能的一些建议与其供应商为任何给定的子类别。应该查询工作正常吗?或者它需要任何优化?
var list = (from p in Products
join cat in Product_SubCategory_Mapping
on p.UserId equals cat.UserId
join sub in SubCategories
on cat.SubCategoryId equals sub.SubCategoryId
where sub.CategoryId == 19 && CustomFunction(p.ID) > 100
select new { p, p.Vendor, trend = CustomFunction(p.ID) })
.Skip((pageNum - 1) * pageSize)
.Take(pageSize);
我将创建一个与查询结果相匹配的自定义类。
- 创建一个视图/存储过程更好的情况下,像这样?
- 可以CustomFunction(p.ID)> 100命名,所以函数不会被调用两次吗?它是数据库中的自定义函数。
- 寻呼将跳过并取得良好表现?
只是一个快速注释(因为我的LINQ技能很弱,我不能提供任何有用的建议来真正回答你的问题)......但我不禁注意到你的产品表有一个** ProductID **列,而另外两个表只有一个** ID **列。我猜这些列代表一个主键字段(并且可能,尽管也是一个IDENTITY字段)。如果是这样,您可能需要考虑在所有表中使名称保持一致:即Category.ID - > Category.CategoryID或Products.ProductID - > Products。ID。供应商和子类别相同。 –
同意。感谢您的建议。我更改了名称。我的实际数据库有正确的名称。 T –