首页 新闻 会员 周边 捐助

SQL执行效率问题

0
悬赏园豆:20 [待解决问题]

1.使用SQL Profiler监控两条EF添加实体生成的SQL语句分别如下:

(1)

exec sp_executesql N'DECLARE @generated_keys table([UserID] uniqueidentifier)
INSERT [dbo].[RS_Users]([Account], [PassWord])
OUTPUT inserted.[UserID] INTO @generated_keys
VALUES (@0, @1)
SELECT t.[UserID], t.[Sort]
FROM @generated_keys AS g JOIN [dbo].[RS_Users] AS t ON g.[UserID] = t.[UserID]
WHERE @@ROWCOUNT > 0',N'@0 nvarchar(50),@1 nchar(32)',@0=N'qinao',@1=N'123 '

(2)

exec sp_executesql N'INSERT [dbo].[RS_Users]([UserID], [Account], [PassWord])
VALUES (@0, @1, @2)
SELECT [Sort]
FROM [dbo].[RS_Users]
WHERE @@ROWCOUNT > 0 AND [UserID] = @0',N'@0 uniqueidentifier,@1 nvarchar(50),@2 nchar(32)',@0='00000000-0000-0000-0000-000000000000',@1=N'qinao',@2=N'123 '

2.实体类和添加实体的代码

public partial class RS_Users
{
public System.Guid UserID { get; set; }
public string Account { get; set; }
public string PassWord { get; set; }
public int Sort { get; set; }
}

============================

RS_Users user = new RS_Users()
{
Account = "qinao",
PassWord = "123"
};
dbcontext.RS_Users.Add(user);
dbcontext.SaveChanges();

3.疑问

 第一条sql语句我是将UserID在映射文件中设置成了标识列属性生成的。第二条是去掉标识属性后生成的。我看到第一条sql语句有连接查询而第二条没有。第一条语句相比第二条语句谁效率更高?又怎么验证呢?

duguao的主页 duguao | 初学一级 | 园豆:124
提问于:2015-03-28 08:13
< >
分享
所有回答(1)
0

看销效率,直接两条语句一起跑,看资源占用的百分比。

幻天芒 | 园豆:37205 (高人七级) | 2015-03-28 10:14

这个结果意味着效率是一样的?

支持(0) 反对(0) duguao | 园豆:124 (初学一级) | 2015-03-28 14:17

@duguao: 貌似只能看具体的查询计划了。才疏学浅,不懂更复杂的了。

支持(1) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-03-28 14:24

@幻天芒: 好吧。谢谢。

支持(0) 反对(0) duguao | 园豆:124 (初学一级) | 2015-03-28 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册