2018-04-09

作者: fc129 | 来源:发表于2018-04-10 00:17 被阅读0次

    mysql基础调优

    1.避免未命中索引

    1.避免在 where 子句中使用!=或<>操作符

    2.在 where 及 order by 涉及的列上建立索引

    3.不要 select id from t where num is null 

    4.尽量避免在 where 子句中使用 or 来连接条件

        不要 select id from t where num=10 or num=20

        可以 select id from t where num=10 union all select id from t where num=20

    5.少用左%

    6.能用between就不要in

    7.对字段用函数会无法命中索引

    8.不要 where substring(name,1,3)=’abc’ ,可以  where name like ‘abc%

    2.其他

    1.不要 select num from a where num in(select num from b)

       可以 select num from a where exists(select 1 from b where num=a.num)

    2.开启查询缓存

        // 查询缓存不开启 

            $r=mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

         // 开启查询缓存

             $today=date("Y-m-d");

             $r=mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

    3.只有一行时用limit1

    4.join表的时候相同的字段都建立索引

    5.把IP地址存成 UNSIGNED INT ,方便between。

    6.避免在整个表上使用count(*),它可能锁住整张表.

    7.千万不要 ORDER BY RAND() ,可以先去除总数取随机数再limit x ,1

    3.查询原理


    回头总结一下MySQL整个查询执行过程,总的来说分为6个步骤:

    1.客户端向MySQL服务器发送一条查询请求

    2.服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段

    3.服务器进行SQL解析、预处理、再由优化器生成对应的执行计划

    4.MySQL根据执行计划,调用存储引擎的API来执行查询

    5.将结果返回给客户端,同时缓存查询结果

    优化原理说明

    相关文章

      网友评论

        本文标题:2018-04-09

        本文链接:https://www.haomeiwen.com/subject/yqnwhftx.html