Ida*_*ter 0 sql asp.net simple.data micro-orm
我正在考虑在我的ASP.NET 4.5网站上使用Simple.Data Micro-ORM.但是,在决定是否使用它之前,我需要知道一些事情.
我们以下面的Join查询为例:
var albums = db.Albums.FindAllByGenreId(1)
.Select(
db.Albums.Title,
db.Albums.Genre.Name);
Run Code Online (Sandbox Code Playgroud)
此查询将被翻译为:
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
Run Code Online (Sandbox Code Playgroud)
我们假设'Genres'表是一个包含数千甚至数百万行的表.我认为在JOIN发生之后过滤数据可能效率非常低,这是Simple.SDate中此查询的转换.
是否更好地过滤Generes表中的数据第一,这意味着先创建一个SELECT语句并使用该过滤表进行JOIN?
提前过滤数据不是更好吗?
此外,是否可以选择使用Simple.Data进行该类型的复杂(在过滤表上的JOIN)查询.
需要你的答案知道是否继续使用Simple.Data,或者使用其他微型ORM来阻止它.
您对数据库引擎如何解释和执行SQL感到困惑.现代数据库对于执行查询的最佳方式非常聪明,并且指令在SQL语句中出现的顺序与它们的执行顺序无关.
尝试通过SQL Management Studio运行一些查询并查看执行计划,以了解它们是如何实际优化和执行的.或者只是尝试你认为可以更好地工作的SQL,并看看它与Simple.Data生成的内容相比实际上是如何执行的.