我想爲我的ASP.NET 4.5網站使用Simple.Data Micro-ORM。然而,在決定是否使用它之前,我需要知道一些事情。Simple.Data默認生成的查詢和性能
讓我們採取以下聯接查詢,例如:
var albums = db.Albums.FindAllByGenreId(1)
.Select(
db.Albums.Title,
db.Albums.Genre.Name);
這個查詢將被翻譯成:
select
[dbo].[Albums].[Title],
[dbo].[Genres].[Name]
from [dbo].[Albums]
LEFT JOIN [dbo].[Genres] ON ([dbo].[Genres].[GenreId] = [dbo].[Albums].[GenreId])
WHERE [dbo].[Albums].[GenreId] = @p1
@p1 (Int32) = 1
讓我們假設「流派」表是用十萬甚至上百萬AA表的行。我認爲在JOIN發生之後過濾數據可能非常低效,這是SimpleQuery中爲此查詢翻譯的內容。
最好過濾Generes表中的數據,這意味着首先創建一個SELECT語句並使用該過濾的表進行JOIN操作?
提前過濾數據不是更好嗎?
此外,是否有一個選項可以使用Simple.Data創建該類型的複雜(JOIN在過濾的表上)查詢。
需要你的答案知道是否繼續使用Simple.Data,或將它潮溼以支持另一個micro-ORM。
順便說一句,如果您有/任何/想法多少時間我花費了優化Simple.Data以獲得更快的性能,您可以在您的問題之外編輯該句子。 :( –