1

我有一个用 PHP 编写的带有搜索表单的网站。这个站点有很多部分和 mySql 表。

客户抱怨结果,因为它们没有分组,并希望根据站点部分对它们进行分组,如下所示:

Results in "About" Page:
<the results>

Results in "Blog":
<the results>

... 等等。

我必须为它实现一个快速的解决方案,所以我做了几个查询并分别运行它们......并使用 foreach 迭代结果并打印它们。

好吧,它有效,但我对此并不满意,因为它很慢,我想知道我将来是否会遇到性能问题。

我自己不是 mysql 天才,我刚开始我的后端程序员生涯,所以我希望有人能告诉我如何以更专业的方式处理这个问题。

我正在考虑使用联接,但我不知道如何使用这种方法对结果进行分组。

任何帮助将不胜感激。

4

1 回答 1

1

我真的怀疑加入会以任何方式帮助您。由于您说每个部分都针对不同的表,因此您无法在仍然有意义的同时加入它们。您可以做的最好的事情是将这些查询写成一个句子,然后一次性获取所有需要的信息,从而节省数据发送的时间,php <=> mysql因为您将执行一次并返回一次。看看这里,看看你如何做到这一点。我真的不认为有什么更好的地方可以改进:)

响应:显然,您执行的请求越多,您的脚本执行的时间就越长。你有没有试过使用命令ping google.com在cmd中?您会看到,即使您发送了非常少量的数据,也无法获得超过 30 毫秒左右的响应速度。这是您为任何请求支付的价格。另外,发送的数据量也会增加时间。所以一一执行你会打很多不必要的电话。此外,您可以随时自己尝试,无论哪种方式编写都不难。并输出任务花费的时间。重复几次。如果发送数据所花费的时间非常微不足道,您可以保持简单的方式。但请记住,如果您的应用程序变得更大,每丢失一毫秒就会累加。将它乘以一千个请求,您可能会浪费一分钟甚至更多的时间。无论如何,绝对不要采用 UNION 方式,因为您很可能会浪费最多的时间来分析您收到的数据。任何一个

关于那个功能:我自己从来没有想过需要使用那个功能,所以要么是我要么你在读它——我们都会从头开始读它。唯一的区别是我知道存在这样的功能:) 奇怪的是,这方面的信息很少。C# 的数据集非常好,可以轻松处理数据。在我看来,PHP 落后了 :/ 我现在都在 C# 中,所以我对 php 的了解越来越少。如果我是你,我会从我提供的链接中复制粘贴示例,然后创建一个可重用的类以供以后使用。希望我至少有一点帮助:)

于 2012-11-12T13:52:47.313 回答