我正在考虑将Simple.Data Micro-orm用于我的ASP.NET 4.5网站。但是,在决定是否使用它之前,我需要知道一些东西。
让我们以以下加入查询:
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
让我们假设"流派"表是一张具有数千甚至数百万行的表。我认为在加入结束后过滤数据可能非常低,这是该查询在simple.date中翻译的内容。
。最好过滤Generes表中的数据fir,这意味着创建首先创建一个选择语句并与该过滤的表进行加入?
提前过滤数据会更好吗?
此外,是否可以选择使用Simple.data。
需要您的答案才能知道是否要进行Simple.Data,还是湿with以支持另一个微型。
您对数据库引擎如何解释和执行SQL感到困惑。现代数据库对执行查询的最佳方法非常明智,并且在SQL语句中显示的指令与执行的顺序无关。
尝试通过SQL Management Studio运行一些查询,并查看执行计划,以查看它们如何实际优化和执行。或者只需尝试您认为可以更好地工作的SQL,并与Simple.data生成的内容相比,查看其实际性能。
simple.data正在生成的sql是iDomatic t-sql,如果我自己起草了sql,我也要写的是我会写的。
此SQL允许SQL Server优化执行计划,这意味着数据的最有效检索。
simple.data的美是,如果您对SQL有任何疑问或问题,则可以调用存储的proc:
db.ProcedureWithParameters(1, 2);