Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Sql 一个网页中有多少个查询?_Sql_Mysql_Database - Fatal编程技术网

Sql 一个网页中有多少个查询?

Sql 一个网页中有多少个查询?,sql,mysql,database,Sql,Mysql,Database,一个网页中有多少查询是好的性能?如果该页面是多次查看的主页 那么 $sql1 = mysql_query("SELECT * FROM a", $db1); while($row = mysql_fetch_assoc($sql1)){ $sql2 = mysql_query("SELECT * FROM b WHERE aid='a'", $db2); $a = mysql_fetch_assoc($sql2); } 好吗?实际上,我可以通过内部联接将$sql1和$sql2组合在一起

一个网页中有多少查询是好的性能?如果该页面是多次查看的主页

那么

$sql1 = mysql_query("SELECT * FROM a", $db1);
while($row = mysql_fetch_assoc($sql1)){
  $sql2 = mysql_query("SELECT * FROM b WHERE aid='a'", $db2);
  $a = mysql_fetch_assoc($sql2);
}
好吗?实际上,我可以通过内部联接将$sql1和$sql2组合在一起,但问题是$sql1是来自数据库1的查询数据,$sql2是来自数据库2的查询数据。我使用的Parallels-Plesk面板不允许我将同一个数据库用户添加到多个数据库中

如果我在我的网站上使用这个代码,它好吗?还是无论如何要这么做

谢谢…

测量一下

对于上面概述的特定情况,如果可能的话,我会合并为join

通常,每个请求都有多个查询是很正常的

许多站点每个查询都有数十个请求,而且性能相当好


使用Apache bench之类的负载测试仪。(如果您安装了Apache,请键入ab以查看参数)

实际上,您在1中有两个问题。
一般的和特殊的。
在我看来,两者都有明显的答案

一个网页中有多少查询是好的性能

查询数量和性能之间没有直接关系。数据库设置、体系结构和调优对性能负责。
查询的数量应该只由数据库体系结构引起。根据需要使用尽可能多的查询。不要为了追求性能而不惜任何代价减少查询数量

好吗

如果你别无选择,这重要吗

还有另一个不言而喻的问题:

我应该关心这个代码段的性能吗

你应该吗?
您目前是否有任何性能问题?
如果不是,为什么要担心呢?为什么要担心这个特定的片段,而不是其他片段呢?
如果是-您必须先分析您的代码。
然后根据分析结果构建优化策略。可能是查询的数量,可能是适当的索引、集群化、服务器升级。

不要盲目射击。采取明智的措施

我喜欢把我的保持在12岁以下

不过说真的,这是毫无意义的。如果假设一个页面中有800个查询是有原因的,那么你可以继续这样做。您可能会发现,每页的查询数量只取决于您正在做什么,尽管在正常情况下,我会惊讶地看到超过50个(尽管现在,如果您将数据库调用抽象化,很难知道您正在做多少)

慢查询更重要

我曾经对某个基于PHP的论坛软件感到失望,该软件在一个页面中有35个查询,运行速度非常慢,但那是很久以前的事了,我现在知道,特定安装运行速度慢的原因与在一个页面中有35个查询无关。例如,其中只有一两个查询占用了大部分时间。它只是有几个非常慢的查询,这些查询由位置良好的索引修复

我认为识别和修复慢速查询应该在识别和消除不必要的查询之前进行,因为这可能会产生更大的影响。
即使三个快速查询可能比一个慢速查询快很多,查询的数量并不一定与速度有关。有时,您可以通过将一个缓慢的查询拆分为多个查询来减少负载并加速页面

尝试缓存

有多种方法可以缓存应用程序的某些部分,这些方法可以在不降低功能的情况下真正减少查询的数量。现在,像这样的库使这变得非常简单,但运行速度非常快。这也比减少查询数量更有助于提高性能

如果查询确实是不必要的,而性能确实起到了作用,则删除/合并它们


只是考虑寻找慢查询和优化它们,或者缓存它们的结果,首先。

< P>我刚才遇到了同样的问题。

问题是在循环中使用查询。如果记录a有10行,它将进行10次查询。如果记录“a”有100行,它将进行100次查询。因此,记录“a”的行数越多,情况就越糟


解决方案是将请求放在一个数组中,并使用正确的foreach循环仅通过2个查询来显示相同的内容。我发现这一点非常清楚。

这取决于您需要的性能以及您必须运行它的系统。例如,来自谷歌或亚马逊的一个页面可能会执行数百个查询,分布在数百台不同的机器上。可能重复另一个重复:另一个:上面所有其他问题都问同样的问题,你应该找到很多有用的答案,享受:)我想是的。但我不能将来自不同数据库的两个查询组合在一起。