PHP PDOStatement :: fetchAll()缓慢执行请求

时间:2016-12-20 17:50:56

标签: php sql-server pdo

我有PHP应用程序我正在开发我需要使用MSSQL Server作为我的数据库源。作为应用程序的唯一开发人员,我可以根据我公司的要求,在数据库服务器之外选择我想要的技术。所以这就是问题所在。

我在连接到MSSQL SQL Server 2014 SP2 CU1(IT控制资源)的Zend Server 9.0上运行PHP 7.0.6。我遇到的问题是,当我对表x执行查询时,数据库调用在3.62毫秒内完成(根据Zend Server)。但是,PDOStatement :: fetchAll()平均需要15秒才能返回27k结果。我已经尝试了各种检索数据的连接方式,但似乎没有任何工作。

有没有人有这样的问题,如果有的话,他们的解决方案是什么。我从这里使用MSSQL DB驱动程序:https://www.microsoft.com/en-us/download/details.aspx?id=20098

我的PDO连接设置如下:

$this->pdo = new PDO("sqlsrv:Server=".$this->host.";ConnectionPooling=0;Database=".$this->table
                          , $this->user
                          , $this->password
                          , array(PDO::ATTR_PERSISTENT => true)
                    );

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

可能是查询不会花费太长时间,但fetchAll会构建一个27k结果的数组,需要一段时间来处理。 您需要为此找到另一种方法,您可以对查询进行分页并在每页显示一系列元素。 这是一个如何执行此操作的教程。 Pagination with PHP and PDO