一直主要從事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 –