性能优化之查询 优化

mysql是目前主流的数据库程序,很多方面都利用mysql进行对数据的储存,对数据库的操作也就是日常所见的了。php和mysql是天生的一对 ,即使大难临头也不会轻易放弃。。。

增删改查是日常用到的对数据库操作方法,一般的小操作对性能的影响也不大,可是到来10k+的数据了进行处理时性能就凸显出来了。当然,平时要养成优化的习惯是最好的。

大概说说数据库优化的几个方面:

  1. 对数据库添加索引
  2. 给查询添加条件限制
  3. 只取需要的字段,不要用通配符*进行全表查询
  4. 尽量不要在循环中执行查询操作!
  5. 其他优化
举个例子:

有时候需要批量插入数据(比如发送优惠券等),直接循环插入对数据库影响是很大的,当然如果数据量不大的情况下没有明显影响。

思路:利用一条sql语句同时插入多条数据。

构造:将需要插入的内容组成数组,然后拼接成字符串在insert into中直接插入多条数据。

其实实现很简单,这样一条语句比分开循环N次性能要好。

$data = $this->GetROWS()->queryrows("SELECT xxx_id FROM  table_abc  WHERE group_id=xxxx");
    if (empty($data))
    {
        return array('code'=>1,'msg'=>'组内没有用户哦,先添加吧');
    }
    $arr = array();
    foreach ($data as $k =>$val)
    {
        $arr[] = "('".$val['xxx_id']."','".$this->data['cid']."')";
    }
    if (!empty($arr))
    {
        $id =$this->GetDBACTION()->insertquery("INSERT INTO easyx (aaa_id,bbb_id) VALUES ".implode(',',$arr)." ");

}

//TODO 下面送上我做的一张思维导图


评论/留言