PHP 中如何 foreach 优化,多表查询优化方案
2017-02-27| 程成| 2203| 0| MySQL

下面介绍如何优化php中foreach遍历数据库连表查询。


原来有需要多表查询的数据时,我都是通过php中foreach语句中,连表查询然后再拼接成需要的数据


大致代码如下(这里结合了thinkphp):


blob.png


(其实可以通过两张表连表查询就能获得结果,不知道当时脑回路怎么想的)

得到结果如下:


blob.png


这里是通过查询a表的目录,然后再通过foreach与b表连接,然后在foreach里拼接,再与a表连接,再拼接,最后返回结果集。但是这里的笛卡尔积是三张表的数据的数据数量。如果表数据多了,查询时间很长。


但是可以通过两条sql语句,再拼接就可以得到想要的结果。原理就是将连接两张表的条件通过in语句来一次性查询出来,再通过foreach语句,如果判断条件相等,就拼接结果。这样就避免了foreach中一条条的遍历,大大优化了select查询。


大致代码如下(这里结合了thinkphp):


blob.png



就可以得到查询结果:


blob.png


这里除了大数组key不一样外,其他都一样。在模板中for和volist都是忽略key的,所以结果并不受影响,就是需要的结果。


如上就是php中如何优化foreach多表查询最简单的解决方案。


×
作者:程成
QQ:492245711