好的,所以我相信很多人已经构建了疯狂的数据库密集型页面......
我正在构建一个页面,我想从中提取各种不相关的数据库信息.以下是此页面的一些示例不同查询:
文章内容和信息
如果作者是注册用户,他们的信息
更新文章的视图计数器
检索文章的评论
检索评论作者的信息
如果文章的读者已登录,请查询其中的信息
等等...
我知道这些基本上会非常闪电,而且我可以结合一些; 但我想确保这不是异常的?
你会在页面上限制多少相当正常和不重要的查询?
尽可能多,但不是更多.
真的:不要担心优化(现在).首先构建它,然后测量性能,IFF在某处存在性能问题,然后从优化开始.
否则,您可能会花费大量时间来优化不需要优化的事情.
我的网页上有50个查询,没有问题.对非大型(即,适合主存储器)表的快速查询可以在1毫秒或更短的时间内发生,因此您可以执行其中的一些.
如果页面加载时间不到200毫秒,您将拥有一个活泼的网站.服务器和浏览器之间的延迟使用了很大一部分,所以我喜欢在服务器上花费<100毫秒的时间.在该时间段内执行任意数量的查询.
最大的瓶颈可能是您必须花费在项目上的时间,因此首先要优化它:)如果必须,稍后优化代码.话虽如此,如果您要编写与此问题相关的任何代码,请编写一些可以明确查询所需时间的内容.这样你至少可以发现你有问题.
我认为没有任何一个正确的答案.我会说只要查询速度很快,并且页面遵循逻辑流程,就不应该对它们施加任意限制.我看过有十几个查询的页面,我看到它们一个爬行.
每个查询都需要往返数据库服务器,因此许多查询的成本随着延迟而增大.
如果它在同一主机上运行,那么仍然会有轻微的速度损失,不仅因为套接字在您的应用程序之间,而且因为服务器必须解析您的查询,构建响应,检查访问以及您使用SQL获得的任何其他开销服务器.
所以一般来说,最好少查询一下.
尽管如此,您应该尝试尽可能多地在SQL中执行:当您在SQL本身无需麻烦的情况下实现相同的算法时,不要在客户端语言中获取某些算法的输入.这不仅可以减少查询次数,还可以帮助您选择所需的行.
Piskvor的答案在任何情况下仍然适用.