PHP导出数据超时的优化建议_第1页
PHP导出数据超时的优化建议_第2页
PHP导出数据超时的优化建议_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第PHP导出数据超时的优化建议一、sql语句复杂,查询时间过长

1、查看索引是否设置妥当,即所用的查询条件是否有添加索引,当然索引不是越多越好,只需给常用的查询条件加上即可,一般采用B+树的索引方式(具体原因可自行百度,不再赘述)

2、在查询语句中尽量避免IN、NOTIN、ISNULL、OR、!=、、LIKE、OR、NOTEXISTS这些查询条件的出现,会导致索引失效。

-IN查询时,可以考虑用BETWEEN来代替

-LIKE查询时,仅当"%"在前时会索引失效,"%"在后是不会失效的

-查询条件里还要避免数字的出现,使用字符串,数字也会导致索引失效,例如,查询:"pid"=1,可以优化为"pid"="1"

-要尽量避免在循环中使用查询语句,这种情况一般可以用join或者with来解决(当涉及到跨库时,请谨慎使用这种方式!)

-查询时,可以指定需要查询的字段,排除掉不需要的字段避免资源浪费

-当数据量多大时,可以使用分页和缓存来优化(具体方法请参考数据量过大导致响应超时部分)

温馨提示:在执行查询语句后,可以通过showprofiles来查询语句的资源消耗情况来帮助你更好的优化sql语句;关于查询语句是否使用了索引,可以在查询语句前加explain来查看索引使用情况,例如:

explainselect*fromuserwhereid='1';

二、处理查询后数据逻辑冗余

-在做数组循环时,尽量使用continue、break来减少没必要的循环;

-尽量减少if嵌套层数,在需要用到多个if-else时,使用switch可以提高效率,特别是在数据量大时

-当进行数组赋值时,

一次赋一个值,使用$arr[]=1,会比array_push($arr,"1"),更快,

但是当需要多次赋值时,

array_push($arr,"1","2","3",...),会比

$arr[]="1";

$arr[]="2"

$arr[]="3"

-遍历数组进行赋值时,尽量使用引用的方式,减少内存开销,例如:

foreach($arras$item){

$item=1;

}

三、数据量过大导致响应超时

当数量两过大,又不想用异步的方式导出excel文件时,可以尝试使用csv来作为到处格式,且查询导出数据时可以使用分页的方式查询,导出时利用ob_flush进行缓存。例如:

$page=1;//页面

$pageSize=1000;//每页条数

while(

$list=Db::name("user")-page($page)-limit($pageSize)-select()

foreach($listas$item){

//TODO进行相应的逻辑处理

$page++;

}

当数据访问次数过多时,建议使用redis缓存一些固定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论