我碰到的MySQL性能优化点

1.在foreach中调用接口(里面执行了查询一条的sql语句) 改进:先将要查询的字段收集到数组里面,然后用in调用一次接口:
 /**
     * @brief 格式化数据(收集数组中的字段,最后用in查询)
     * @param params 原始数组
     * @param fields 所需字段
     * @return ret 返回数组
     * @desc 从数组中获取需要字段,组成新的数组返回,主要用于改变数据库返回数据的格式
     */
    public static function getNeedFromListArray($params , $fields) {
        $ret = array();
        foreach($params as $key => $value) {
            $ret[] = $value[$fields];
        }
        return $ret;
    }


2.小集合驱动大集合:先使用子sql语句查询出小的集合,然后再查大的
select s.follow_user_id,p.calledtotallen,p.calling_time
                from       
                (select p.calledtotallen,p.calling_time
                    from phone_call_log_current p ‘. $where2 .‘) p
                left join car_sale s on p.sale_id = s.id ‘.$where1.‘ 
                order by p.calling_time desc 
                limit 0, 10‘
3.查询一条数据的时候使用limit 1。(这个就不用例子了)
4.给where,join中的字段增加索引。(平时都是DBA加)
5.用什么数据就查询什么数据
不要图省事用select *
6.建立数据库之前,不要使用NULL(在IOS/Android中出现NULL可能导致崩溃)导致Android/IOS崩溃的null----PHP和Android/IOS数据交互
崩溃了两次之后,为了兼容旧数据,还用了个递归函数,专门来处理这些NULL
7.使用数据为int类型时,不要使用单引号,会降低效率
where id = ‘123‘;
加了单引号,成了string,效率更低
8.建立好日志和异常处理非常重要,可以迅速知道,在哪里出现了瓶颈。(尤其是慢查询日志)
这个是所有的模块都要处理的东西。
9.不要使用like字段,如果必须模糊搜索,使用sphinx等,效率和性能会大大提升
like会阻塞掉其他的sql查询


我碰到的MySQL性能优化点,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。