不要在循环中对数据库进行操作

不要在循环中对数据库进行操作

性能非常低下,应改为用IN查询

示例:

1、在循环中查询数据库,增加gv_title属性(性能低下)

foreach ($res['data'] as &$val)

{

$gamesql    =   'SELECT `gv_title` FROM

`mzw_game_version` WHERE `gv_id` =

'.$val['gv_id'];

$gamequery  =   $this->db->query( $gamesql

);

$val['gv_title']        =   isset(

$gamequery->row()->gv_title ) ? $gamequery->row()->gv_title :

'';

$val['select_name_cf']          =

'';

$val['do_name_cf']

=

'';

$val['iTotalRecords']

=

$res['total'];

$val['iTotalDisplayRecords']    =

$res['total'];

$val['gc_client']

=

$arr_client[$val['gc_client']];

$val['gc_hide']

=

$arr_hide[$val['gc_is_hide']];

$val['gc_top']

=

$arr_top[$val['gc_is_top']];

$val['gc_top_time']

= date( 'Y-m-d H:i:s', $val['gc_top_time']

);

$val['gc_create_time']          =

date( 'Y-m-d H:i:s', $val['gc_create_time']

);

}

2、改用 IN 查询,速度提高至少10倍

foreach ($res['data'] as &$val)

{

$vid[]

= $val['gv_id'];

color=#ff0000>//将gv_id存入到数组

$val['select_name_cf']          =

'';

$val['do_name_cf']

=

'';

$val['iTotalRecords']

=

$res['total'];

$val['iTotalDisplayRecords']    =

$res['total'];

$val['gc_client']

=

$arr_client[$val['gc_client']];

$val['gc_hide']

=

$arr_hide[$val['gc_is_hide']];

$val['gc_top']

=

$arr_top[$val['gc_is_top']];

$val['gc_top_time']

= date( 'Y-m-d H:i:s', $val['gc_top_time']

);

$val['gc_create_time']          =

date( 'Y-m-d H:i:s', $val['gc_create_time']

);

}

if ( empty( $vid ) )    $vid =

array(0);

$vid_str    =   implode( ',', $vid

);

$sql        =   "SELECT

gv_title,gv_id FROM mzw_game_version WHERE gv_id IN ({$vid_str})";

color=#ff0000>//用IN方法对id数组进行查询

$query      =   $this->db->query( $sql

);

$title_res  =

$query->result_array();

$title_arr  =

array();

foreach ($title_res as $k => $v)

{

$title_arr[$v['gv_id']] =

$v['gv_title'];

}

foreach ($res['data'] as &$val)

{

$val['gv_title']    =

$title_arr[$val['gv_id']];

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

html 连续发送数据库,不要在循环中对数据库进行操作.htm相关推荐

  1. 避免在循环中访问数据库,一次对于PHP代码的优化经历

    避免在循环中访问数据库,一次对于PHP代码的优化经历 这次是在上班过程中发生的事件,我隔壁的同事正在写一个功能.这个功能简单的描述是这样的:从数据库几个表中获取数据,导入到excel,类似的功能,实际 ...

  2. 小解的C语言笔记:循环中的取余操作 0%0

    循环中的取余操作 0%0 题目 总结 题目 p 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er sa ...

  3. docker 数据库 mysql_在Docker中体验数据库之MySql

    在上一篇在Docker中体验数据库之Mongodb之后,这次记录一下在docker中安装mysql.过程要比Mongodb麻烦一点-- 参考网址: https://dev.mysql.com/doc/ ...

  4. python管理数据库的库_Python中管理数据库

    前言:Python中是利用MySQL模块和数据库之间建立联系. MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL ...

  5. wordpress 数据库_在WordPress中使用数据库

    wordpress 数据库 Out of the box, WordPress provides tons of functions that can be used to interact with ...

  6. 怎样修改游戏服务器里的数据库,修改游戏服务器中的数据库

    修改游戏服务器中的数据库 内容精选 换一换 业界对备份一致性的定义包括如下三类:不一致备份:备份的文件.磁盘不在同一个时间点.崩溃一致性备份:崩溃一致性备份会捕获备份时磁盘上已存在的数据,文件/磁盘数 ...

  7. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

  8. python数据库迁移教程_django中的数据库迁移的实现

    Django是用python写的web开发框架,其特点是: 1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速, 2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能 ...

  9. mysql数据库插入datetime_往MySQL数据库datetime类型字段中插入数据库的当前时间

    代码: StringBuilder sb = new StringBuilder(); sb.append(" insert into uosdetailfile ("); sb. ...

最新文章

  1. 第十届蓝桥杯JavaB组总结
  2. 修改ALSM_EXCEL_TO_INTERNAL_TABLE的限制
  3. linux常用命令:sudo 命令
  4. 数据库元数据数据字典查询_3_列出给定表的基本信息
  5. 安卓入门程序《发短信》
  6. 接收字节流_Java中的IO流之输入流|乐字节
  7. 默认适应窗口_PS教程基础之cs6默认快捷键汇总及补充
  8. Git 删除所有文件
  9. 微软Win10最新补丁KB5017380更新了什么?
  10. urdf 学习与制作
  11. [车联网安全自学篇] Android安全之Android so文件分析「详细版」
  12. 【GD32F310开发板试用】Contiki-NG在GD32F310的移植
  13. 计算机网络根据其规模大小和延伸范围,网络管理员考试计算机网络的分类
  14. 《华尔街》观后笔记9——拯救危机
  15. MySql学习笔记(2)--数据库操作及数据管理
  16. Ubuntu 如何使用crontab 定时检查srs进程
  17. BZOJ2277 [Poi2011]Strongbox 【数论】
  18. .NET 6 Preview 1 发布
  19. OFBiz —— 关于用户角色安全组的设计
  20. 多线程和虚拟机的宏观理解

热门文章

  1. 第一个通过HCIEv3.0的咱的学员
  2. python3 json.dump乱码问题
  3. 20135337朱荟潼 Linux第八周学习总结——进程的切换和系统的一般执行过程
  4. Bootstrap基础一 CSS 概览
  5. java实现选择排序
  6. CentOS6 kvm添加网卡桥接口脚本
  7. canvas是什么牌子的包_Jack Spade DIPPED INDUSTRIAL CANVAS UTILITY BRIEF 男款帆布手提包
  8. tensorflow tf.nn.max_pool_with_argmax返回最大池化对应索引值
  9. 无法安装.msi文件
  10. Druid:数据库连接池实现技术