一个网页中有多少查询效果不错?如果该页面是多次查看的主页。
怎么样......
$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);
}
好吗?实际上,我可以通过INNER JOIN将$ sql1和$ sql2组合在一起,但问题是$ sql1是来自数据库1的查询数据,而$ sql2是来自数据库2的查询数据。我使用的Parallels Plesk Panel不允许我添加相同的数据库用户到多个数据库。
如果我在我的网站上使用此代码,这样好吗?或者无论如何要这样做?
...谢谢
答案 0 :(得分:7)
实际上你在1中有2个问题
一般的和特定的。
在我看来,两者都有明显的答案。
一个网页中有多少查询效果不错?
查询数量与性能之间没有直接联系。数据库设置,体系结构和调优是性能的原因 查询数量应仅由数据库体系结构引起。尽可能多地使用您需要的查询。不要为了追求绩效而不惜任何代价减少查询数量。
好吗?
如果你别无选择,这有关系吗?
另一个未说出口的问题:
我应该关注这段代码片段吗?
你应该吗?
你现在有任何性能问题吗?
如果不是 - 为什么要担心?为什么要担心这个特定的片段,而不是任何其他片段?
如果是 - 您首先分析代码。
然后根据分析结果构建优化策略。它可能是查询数量,可能是正确的索引,集群化,服务器升级
不要盲目射击。采取明智的措施。
答案 1 :(得分:4)
测量它。
对于上面列出的具体情况,如果可能的话,我会加入一个联接。
通常,每个请求多次查询是很正常的。
许多网站每个查询都有数十个请求,而且性能相当高。
使用像Apache工作台这样的负载测试器。 (如果已安装Apache,请键入ab以查看参数)
答案 2 :(得分:4)
我喜欢把我的情况保持在8岁以下。
尽管如此,这是毫无意义的。假设您有理由在页面中有800个查询,那么您可以继续执行此操作。您可能会发现每页的查询数量仅取决于您正在做的事情,但在正常情况下我会惊讶地看到超过50(尽管这些日子,很难意识到有多少如果你抽出你的数据库电话,那你正在做的事。)
慢查询更重要
我曾经对某个基于PHP的论坛软件感到沮丧,该软件在一个页面中有35个查询并且运行速度很慢,但那是很久以前我现在知道特定安装运行缓慢的原因无关在页面中有35个查询。例如,这些查询中只有一个或两个占用了大部分时间。它只是有一些非常慢的查询,这些查询是通过良好放置的索引修复的。
我认为识别和修复慢速查询应该在识别和消除不必要的查询之前进行,因为它可能会产生更大的差异。
甚至考虑三个快速查询可能比一个慢查询快得多 - 查询数量不一定与速度有关。
我有一个页面(实际上是一种仅由管理员运行的测试用例/诊断工具),它有超过800个查询,但它只需几秒钟即可运行。我猜他们都是非常简单的查询。
尝试缓存
有多种方法可以缓存部分应用程序,这些方法可以真正减少您执行的查询数量,而不会降低功能。像memcached这样的图书馆这些日子让这个简单易行,但却运行得非常快。与减少查询数量相比,这还有助于提高性能。
如果查询真的没必要,而且性能确实有所不同,那么删除/合并它们
首先考虑寻找慢查询并优化它们或缓存其结果。
答案 3 :(得分:1)
我在这里遇到了同样的问题。
问题是您在循环中使用查询。如果您的记录a有10行,则会产生10个查询。如果您的记录'a'有100行,则会进行100次查询。因此,您的记录'a'所包含的行越多,它就越糟糕。
解决方案是将请求放在一个数组中,并使用正确的foreach循环来显示同样的东西,只有2个查询。我发现This site对此主题非常清楚。