【发布时间】:2014-10-26 13:22:49
【问题描述】:
我正在使用 SQL Server 2012 和 Linq-to-SQL。
我有这个方法在检查一些条件后更新数据库中的一行。
我用两种方式写了它。哪一个更快,资源消耗更少? (SQL 查询、CPU 计数...)
查询 #1:
在这个我使用IEnumerable
internal static bool CheckSecretCodeLoginkError(String License, String SecretCode, DataClasses1DataContext db)
{
IEnumerable<User> user = db.Users.Where(a => a.Licensekey == License).Select(a => a);
if (SecretCode != user.First().SecretCode && !user.First().SkipSecretCode)
{
if (user.First().LastSecretChangeDate > DateTime.UtcNow - TimeToPreventSecretCodeChange)
{
//secret error
return true;
}
else
{
//no error
//update secret code and last change
user.First().LastSecretChangeDate = DateTime.UtcNow;
user.First().SecretCode = SecretCode;
db.SubmitChanges();
return false;
}
}
else
{
return false;
}
}
查询 #2:
internal static bool CheckSecretCodeLoginkError(String License, String SecretCode, DataClasses1DataContext db)
{
User user = db.Users.Where(a => a.Licensekey == License).Single();
if (SecretCode != user.SecretCode && !user.SkipSecretCode)
{
if (user.LastSecretChangeDate > DateTime.UtcNow - TimeToPreventSecretCodeChange)
{
//secret error
return true;
}
else
{
//no error
//update secret code and last change
db.Users.Where(a => a.Licensekey == License).Select(a => a).First().LastSecretChangeDate = DateTime.UtcNow;
db.Users.Where(a => a.Licensekey == License).Select(a => a).First().SecretCode = SecretCode;
db.SubmitChanges();
return false;
}
}
else
{
return false;
}
}
【问题讨论】:
-
为什么不自己测量呢?
-
我会删除我的答案并在这里发表评论:您可以自己查看Linq to SQL生成的SQL stackoverflow.com/a/17092821/397817
标签: c# .net sql-server performance linq