首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL请求是否应该分组?

MYSQL请求是否应该分组?
EN

Stack Overflow用户
提问于 2013-12-06 14:09:06
回答 3查看 58关注 0票数 0

我有一个页面,必须从1db,3个表中获取数据。我使用php/mysql。

现在,每当页面需要数据时,它都会调用一个函数来创建一个新的连接,获取特定的数据并关闭连接。

为了增加装货时间,我应该这样做吗?会引起注意吗?

当页面加载时,它将调用一个函数来创建一个新连接,从这3个表中获取数据,将它们放入一个数组中,然后返回它。然后,我将使用数组在需要的地方解析数据。以减少连接/关闭的数量。

另外,如果我对这3个表使用一个数组,将其从函数中返回,然后将其拆分。或者对每个表使用一个数组,然后从函数中返回3个数组。

现在一切正常,但我关心装货时间。

非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-06 14:34:45

您可能应该指定这些表的类型。它们是否与外键相连,还是完全无关?

一般来说,应该打开与数据库的整个通信的连接,但要尽可能快。因此,工作流应该如下所示:

  1. 做一些事情(例如准备数据)
  2. 开式连接
  3. 使用数据库
  4. 紧密连接
  5. 做一些事情(例如,过程数据)

假设它是3个没有关系的selects,并且您同时需要它们:

您应该打开到数据库的连接,并分别为每个数据库执行返回数组的选择。把它们放在一起,然后解析它们,这似乎是一种开销。最后,您应该关闭连接。

假设表是相关的:

您应该使用join并在一个选择中获取数据。

假设3个选择太昂贵,您需要在一个选择中获取所有数据:

您可以使用union对数据进行聚类,然后在一个选择中提取它们,然后解析结果。然而,这种情况并不经常发生。而且,代码的可读性更差。

票数 0
EN

Stack Overflow用户

发布于 2013-12-06 14:13:29

如果不关闭连接,php将使用先前打开的连接。

我想这是最好的解决办法。你不需要每次都取数组,因为你。也许,根本不需要它。

票数 0
EN

Stack Overflow用户

发布于 2013-12-06 14:36:23

您可以使用memcached或redis作为加载时间。如果保持打开连接,则连接较新的关闭。你的连接极限就会超过。

看看这个https://stackoverflow.com/a/4779560/237564

http://www.sitepoint.com/an-introduction-to-redis-in-php-using-predis/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20425907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档