我们有以下代码段:
public async Task<bool> AreConsumerIdAndSecretExistAsync(AuthenticateConsumerRequest request)
{
return await _pplEntities.ApiConsumers.AnyAsync(ac =>
ac.ConsumerId.Equals(request.ConsumerId) && ac.ConsumerSecret.Equals(request.ConsumerSecret));
}
这将查询仅包含三行数据的表。 由于某种原因,执行上述方法有时会花费很长时间。 这不是发生此问题的唯一地方。好像在其他地方运行多个SQL查询时,要花很长时间才能运行第一个查询,而其他查询似乎没有问题。如果我在本地运行该应用程序,除了第一个查询之外,它的运行速度非常快。
下面是New Relic跟踪的图片,显示了应用程序的运行速度。在其他环境中,我们会遇到整个请求需要15秒以上的时间;这非常令人困惑。
我们正在.NET 4.6.1上运行。
答案 0 :(得分:0)
是左边的数字是被调用的时间还是时间?...是被调用的时间,而不是正确的时间... 因此调用它的速度不会太慢...
避免等于,这是一个c#函数,不确定它是否具有sql翻译...其中'=='100%我知道。
在pr或fk或主查找列上放置索引
var res = _pplEntities.ApiConsumers
.Where(ac => ac.ConsumerId == request.ConsumerId
&& ac.ConsumerSecret == request.ConsumerSecret)
.ToListAsync()
if(res.Any())
{
//to stuff and things
}