我有一个页面,必须从1db,3个表中获取数据。我使用php/mysql。
现在,每当页面需要数据时,它都会调用一个函数来创建一个新的连接,获取特定的数据并关闭连接。
为了增加装货时间,我应该这样做吗?会引起注意吗?
当页面加载时,它将调用一个函数来创建一个新连接,从这3个表中获取数据,将它们放入一个数组中,然后返回它。然后,我将使用数组在需要的地方解析数据。以减少连接/关闭的数量。
另外,如果我对这3个表使用一个数组,将其从函数中返回,然后将其拆分。或者对每个表使用一个数组,然后从函数中返回3个数组。
现在一切正常,但我关心装货时间。
非常感谢。
发布于 2013-12-06 14:34:45
您可能应该指定这些表的类型。它们是否与外键相连,还是完全无关?
一般来说,应该打开与数据库的整个通信的连接,但要尽可能快。因此,工作流应该如下所示:
假设它是3个没有关系的selects,并且您同时需要它们:
您应该打开到数据库的连接,并分别为每个数据库执行返回数组的选择。把它们放在一起,然后解析它们,这似乎是一种开销。最后,您应该关闭连接。
假设表是相关的::
您应该使用join并在一个选择中获取数据。
假设3个选择太昂贵,您需要在一个选择中获取所有数据:
您可以使用union对数据进行聚类,然后在一个选择中提取它们,然后解析结果。然而,这种情况并不经常发生。而且,代码的可读性更差。
发布于 2013-12-06 14:13:29
如果不关闭连接,php将使用先前打开的连接。
我想这是最好的解决办法。你不需要每次都取数组,因为你。也许,根本不需要它。
发布于 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/
https://stackoverflow.com/questions/20425907
复制相似问题