ASP.NET 4.5 Web サイトに Simple.Data Micro-ORM を使用することを考えています。ただし、使用するかどうかを決定する前に知っておく必要があることがあります。
たとえば、次の Join クエリを見てみましょう。
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
「Genres」テーブルが、数千または数百万の行を持つテーブルであると仮定しましょう。JOIN が行われた後にデータをフィルター処理するのは非常に非効率的である可能性があると思います。これは、このクエリが Simple.Date で変換したものです。
Generes テーブルで最初にデータをフィルター処理する方がよいでしょうか。つまり、最初に SELECT ステートメントを作成し、そのフィルター処理されたテーブルで JOIN を作成しますか?
事前にデータをフィルタリングした方がよいのではないでしょうか?
さらに、Simple.Data を使用してそのタイプの複雑な (フィルター処理されたテーブルでの結合) クエリを作成するオプションはありますか。
Simple.Data を続行するか、別のマイクロ ORM を優先してダンプするかを知るには、回答が必要です。