Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每个HTTP请求有多少SQL查询是最佳的?_C#_.net_Sql Server_Asp.net Mvc - Fatal编程技术网

C# 每个HTTP请求有多少SQL查询是最佳的?

C# 每个HTTP请求有多少SQL查询是最佳的?,c#,.net,sql-server,asp.net-mvc,C#,.net,Sql Server,Asp.net Mvc,我知道这个问题的答案大部分是“视情况而定”,但我想看看是否有人有一些建议 我们在ASP.NET MVC中执行每个请求的查询。每个请求都需要获得用户权限信息,以及显示视图的各种数据。多少是太多了,我知道我应该意识到我正在执行的查询的数量。我想如果它们是小查询并经过优化,那么半打就可以了?我说得对吗 你觉得怎么样?尽量少 使用缓存进行查找。还可以根据需要在会话中存储一些轻量级数据(如权限),但不能存储更多 换句话说,性能瓶颈不在于查询的数量,而在于您在查询中做了什么以及如何处理数据(例如,缓存一个巨

我知道这个问题的答案大部分是“视情况而定”,但我想看看是否有人有一些建议

我们在ASP.NET MVC中执行每个请求的查询。每个请求都需要获得用户权限信息,以及显示视图的各种数据。多少是太多了,我知道我应该意识到我正在执行的查询的数量。我想如果它们是小查询并经过优化,那么半打就可以了?我说得对吗

你觉得怎么样?

尽量少


使用缓存进行查找。还可以根据需要在会话中存储一些轻量级数据(如权限)

,但不能存储更多


换句话说,性能瓶颈不在于查询的数量,而在于您在查询中做了什么以及如何处理数据(例如,缓存一个巨大但静态的结果集可能会有所帮助)。

您可以根据需要进行任意多的查询,直到您的站点变得太慢。

最佳查询量为零


鉴于这很可能无法实现,唯一合理的说法是:“尽可能少”

过早优化是万恶之源:)

首先创建应用程序,如果它运行缓慢,则必须确定原因并优化该部分。当然,减少查询将节省您的时间,但也会优化您必须执行的查询

你可以花一整天的时间来减少50%的查询时间,这只需要2毫秒的时间,或者花2个小时删除一些
内部连接,这使得另一个查询需要10秒。在开始优化之前,分析问题所在。

  • 简化您的网站设计,直到 尽可能简单,但仍然 满足客户的要求

  • 缓存可以缓存的信息

  • 将信息预加载到缓存中 在请求之外,您可以在哪里访问

  • 只要求提供你需要的信息 在这项请求中需要更多的帮助

  • 如果需要对单个请求进行大量独立查询,请尽可能并行加载

剩下的就是该站点的“最佳”数量。 如果速度太慢,您需要再次查看上面的内容

用户权限信息可以缓存,其他常见信息也可以随处显示


您可能可以通过缓存超出要求的内容来解决问题。例如,您可能可以缓存“实时”信息,如产品库存水平和用户的购物车。使用SQL更改通知允许您在后台过期并重新填充缓存

除了减少行程的所有其他建议外,它还取决于每次往返检索的数据量。如果它只有几个字节,那么它可能会很健谈,性能也不会受到影响。但是,如果每次行程返回数百kb,那么您的性能将受到更快的影响。

您已经回答了自己的问题“视情况而定”

尽管如此,试图证明每个HTTP请求的最佳查询数不是一个清晰的场景。如果您的SQL server具有真正良好的硬件支持,那么您可以在更短的时间内运行大量查询,并且HTTP请求的周转时间非常短。所以基本上,“这取决于”正如你正确地说的那样。

Q:你有与数据库查询相关的性能问题吗

是吗?A:比现在少。
不A:和你现在的号码一模一样

如果它没有坏,就不要修理它。

虽然重构和优化以节省几毫秒的时间对于程序员来说是一种有趣且有益于智力的方式,但这通常是浪费时间


此外,更改代码以合并数据库请求可能会以代码的简单性和可维护性为代价。也就是说,虽然从技术上讲可以将多个查询合并为一个查询,但这可能需要删除代码中业务对象的概念隔离,这是不好的。

如上所述,一些缓存可能适合您的情况。正如你的问题所暗示的,真正的答案是“视情况而定”。一般来说,查询越少越好,因为每个查询都有相关的成本。您应该检查您的数据模型和应用程序的需求,以确定什么是合适的


例如,如果用户的权限在用户会话期间可能是静态的,那么缓存权限数据以减少所需的查询是有意义的。如果视图中显示的数据在用户会话中也是静态的,那么这些数据也可以被缓存。

如果“最佳”表示“可能的最佳情况”,那么0确实是正确答案:)+1。当然,大多数情况下,过早优化也比实际工作更有趣。但是,答案是,最佳查询数与您现在的查询数相同,只要它表现良好。我不会说这是万恶之源,但肯定会适得其反。+1太多人在出现问题之前进行了优化。现在他们有难以阅读的代码,当其他人试图进行更改时,这些代码会导致问题。除非有问题,否则别这么做。