zoukankan      html  css  js  c++  java
  • mysql优化

    sql的书写规范:

    1.表名需要有意义

    2.注释 单行注释 -- 多行注释 /*   */

    3.缩进

    4.空格

    5.大小写 关键字用大写  表名列名用小写

    sql技巧:

    1.CASE WHEN THEN ...ELSE END  用于查询  或者用于修改

    2.HAVING 一般和聚合函数一起使用的 也可单独使用 count(*)

    3.自连接 删除重复行  排序

     4.COALESCE函数 可以对null值进行转换 COALESCE(city,'N/A')

    sql优化:

    1.参数是子查询的时候 用EXISTS 代替IN (用在where后面  只返回两个值 true和false)

    原因:可以使用索引 避免全表扫描  不会产生临时表 

    2.避免排序

    会产生排序的运算

    GROUP BY 

    ORDER BY 

    聚合函数(SUN  AGV COUNT MAX MIN)

    DISTINCT 

    集合运算符(UNION  INTERSECT EXCEPT)

    窗口函数(RANK ROW_NUMBER)

    如果在内存上排序还好 但如果内存不足导致需要在硬盘上排序的话 性能会急剧下降 所以需要减少不必要的排序

    1)UNION 更改为UNION ALL 会查询所有的数据 包括重复的

    2)用EXISTS代替DISTINCT 

     3)在极值函数中使用索引  (也会进行全表查询 不会索引中本身就是有顺序的)

     4)能写在WHERE  中的条件不写在HAVING中  

     5)在GROUP BY和ORDER BY中使用索引  可以根据索引中的顺序省略排序

     6)使用索引的时候 字段应该是原始字段 

     3.尽量避免使用否定形式 不会命中索引  < >  !=  NOT IN

     4.进行默认类型转换

     

     5.减少中间表  内存的消耗  原始表的索引不容易找到

     6.需要对多个字段进行IN查询的时候 将他们汇总到一处

     7.使用联合索引的时候 遵循最左原则

     8.LIKE的时候 遵循最左原则

     9.简单字符串表达式

     10.尽量使用自增id作为主键

    主键的原则:自增  尽量小 不对主键进行修改

    11.优化count(*)

  • 相关阅读:
    修改默认runlevel
    shell数学运算
    Ubuntu碎碎念
    编译Linux-2.6.23内核中遇见的错误
    CentOS设置静态IP
    多线程--对象锁和类锁
    [Unity移动端]Touch类
    [Lua]string与中文
    MQTT 5.0 新特性(四)Clean Start 与 Session Expiry Interval
    EMQ 9 月 新发 | EMQ X Enterprise 3.4.0 功能概览
  • 原文地址:https://www.cnblogs.com/xiatc/p/12965586.html
Copyright © 2011-2022 走看看