simple.data默认生成的查询和性能



我正在考虑将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);

相关内容

  • 没有找到相关文章

最新更新