如何解决zend framework 2.3下大量数据查询慢的问题?

分类:PHP | 作者:凹凸曼 | 发表于2014/10/27

最近研发系统中使用zend framework 2.3框架, 表的数据量达到几十W的时候,分页组件Paginator 查询数据非常慢,几十W的数据查询对于MYSQL 来说不应该非常慢,并且分页配置按照官网方法配置的。
问题一、Paginator构造sql的性能问题

sql结构如下:

[queryString] => SELECT 字段 FROM `表名` ORDER BY `id` DESC LIMIT :limit OFFSET :offset

explain 运行一下 ,type :all 确实不太好

更改建议一:用id进行范围查询可以提高性能

问题二、每条记录都是封装成对象,对象比原来的数组,我觉得性能上还差一大截

更改建议二:改为数组存放

问题三、mysql 配置文件缓存配置

zend framework 2.3 配置文件记录一下

分类:PHP | 作者:凹凸曼 | 发表于2014/08/05

最近一次在项目中使用zend framework 2.3 , 顺便记录一下它的配置文件
一、数据库适配器配置 global.php

return array(
‘db’=>array(

‘driver’=>’Pdo’,
‘dsn’=>’mysql:dbname=test;host=localhost’,
‘driver_options’=>array(
PDO::MYSQL_ATTR_INIT_COMMAND=>’SET NAMES \’UTF8\”
),
),

‘service_manager’=>array(
‘factories’=>array(
‘Zend\Db\Adapter\Adapter’=>’Zend\Db\Adapter\AdapterServiceFactory’,

)
),

);

二、数据库帐号配置 local.php

return array(

‘db’=>array(
‘username’=>’test’,
‘password’=>’test’,
),

);

三、统一分页 路由配置及主要路由控制配置

‘router’ => array(
‘routes’ => array(
//分页
‘paginator’ => array(
‘type’ => ‘segment’,
‘options’ => array(
‘route’ => ‘[page/:page]’,
‘defaults’ => array(

‘page’ => 1,
),