zoukankan      html  css  js  c++  java
  • mysql explain亲测

    mysql explain亲测


    1 where后面字段加索引:数据库类型如果是字符串类型 查询where的时候必须要用 字符串 类型必须一致 否则不用索引 type还是会是all的 ps:如果where有2个字段匹配 那就要2个字段加上索引 这里有必要说明下 btree索引支持匹配索引第一列 也就是说 info1和info2加了复合索引也同时给info1加了索引

    2 left join 索引优化的时候 只需要右表字段加索引 还有where后字段加索引 ps左表尽可能的小 因为他不用索引的。。。 适当的时候where左表字段筛选

    3 应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。
    应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0
    应尽量避免在 where 子句中使用or 来连接条件, 一般用in来代替or 或者 select * from mobantestinfo where info2=33 union all select * from mobantestinfo where info2=36
    .应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:select id from t where num/2=100应改为:select id from t where num=100*2

    4能用唯一索引尽量用唯一索引
    5 goupby语句 只需要gourp by后面的字段要加索引 不过type也只能达到index级别


    如果是下面语句 没有where什么 其他函数
    <pre>
    SELECT * FROM `mobantestinfo` GROUP BY info2
    </pre>

    ps:加复合索引 每个字段 type会达到range 注意info2要排第一个才有效果


    6 加了索引会降低insert和update速度 所以不要滥用

    7搜索url这种可以考虑使用哈希索引 不过需要memory引擎

    8给order by加索引能增加排序速度 一般表非常大的时候使用 ps:给order by加索引的时候 前面where字段也要加 不然没效果

    9 union all比union 性能好


    10避免重复查询刚刚更新的数据 mysql语句如下 第二次不需要查询表 速度会快很多

    <pre>
    update mobantestinfo set info1=333 where id=33 AND @now:=333 AND @now1:=444;
    select @now as xx,@now1 as xx1;
    </pre>


    11 尽量用in代替or 因为or不用索引 in能用索引

  • 相关阅读:
    Struts2中请求参数的接收方式和ModelDriven机制及其运用
    struts2获得请求参数的方式
    参数(parameter)和属性(Attribute)的区别
    getContextPath、getServletPath、getRequestURI,getRealPath的区别
    struts2的result的type属性
    Struts2的值栈和对象栈
    el表达式跟ognl表达式的区别(转)
    Struts学习之值栈的理解
    创建虚拟机-1
    安装kvm模块配置网络
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11872942.html
Copyright © 2011-2022 走看看