小弟我碰到的MySQL性能优化点

WBOY
发布: 2016-06-07 16:25:00
原创
1418 人浏览过

我碰到的MySQL性能优化点 1.在foreach中调用接口(里面执行了查询一条的sql语句) 改进:先将要查询的字段收集到数组里面,然后用in调用一次接口: /** * @brief 式化数据 (收集数组中的字段,最后用in查询) * @param params 原始数组 * @param fields 所需

我碰到的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查询


相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板