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

    Mysql语句优化

    1、使用select语句尽量多用字段,使用 * 效率更低。因为使用 * ,数据库还要去查询数据字典,然后解析列名,直接写列名会提高效率。

    select * from user;
    要写成
    select userID,userName,userSalary from user;

    2、 查询数量,select(*)会有一个展开的过程,建议用字段,但是count(*)不会直接展开,直接就是扫描,查询数量,而count(1)还要找到对应的字段所以效率就低了。

    3、 查询一条语句,尽量在后面加上“limit1”(数据库查询到一条即停止)。

    4、快速插入语句: 例如:

    insert into user(name) values(‘m’); insert into user(name) values(‘n’);
    改为,
    insert into user(name) values(‘m’), (‘n’);

    SQL语句优化遵循原则
    1、尽量避免在列上运算,这样会导致索引失效。

    2、使用 JOIN 时,应该用小结果集驱动大结果集,同时把复杂的 JOIN 查询拆分成多个query,因为JOIN 多个表,可能导致更多的锁定和堵塞。

    3、使用LIKE 时,避免使用 %%。

    4、select 指定查询字段,不要全查出来,节省内存。

    5、使用批量插入语句节省交互。

    6、limit的基数比较大时,使用 between,between 限定比 limit 快,但是between也有缺陷,如果id中间有断行或是中间部分id不读取的情况,数据会少。
    例如:

    select * from t where 1 limit 100000,10 ;
    可改为:
    select * from twhere id between 100000 and 100010

    7、不要使用rand 函数取多条随机记录。

    8、避免使用 NULL。

    9、不要做无谓的排序操作,而应尽可能在索引中完成排序。

    10、删除所有记录的时候,用truncate 替代 delete,因为 delete 删除记录时,会扫描整个表,然后再一条一条删除,而 truncate table user; 是一次性删除整个表的所有内容,会提高效率。

    11、尽量多使用commit,因为 commit 会释放回滚点 callback。

    12、用 where 子句替换 having 子句,where 先执行,having 后执行。因为 having 会先分组,比较占内存。

    13、多使用内部函数提高SQL效率,例如多使用concat连接,代替‘||’的符号连接。

    14、表名过长时,尽量使用表的别名,因为长表名更加的耗费扫描时间。

    15、使用列的别名,同样地,长列名也会耗费扫描时间。

    16、二者都能使用尽量使用where(与having比较):where先过滤(数据就少了)再分组 。

    17、例:

    select a.*, b.* 
    from a,b 
    where a.id=b.a_id;

     注意from后面的表名,
      (1).如果多表查询是完全无关系的话,将记录和列名最少的表写在最后,然后依次类推
      (2).如果多表查询是有关系的话,将引用最多的表放在最后,然后依次类推,这样速度会有所提高。
    18、where子句中的连接顺序(where也采用从右往左解析):

    当使用where子句连接的时候,要将可以过滤掉最大数量记录的条件写在where子句的最右边,这样,可以过滤掉大量数据后,再执行其他条件,可以提高效率。


    SQL优化持续更新中。。

  • 相关阅读:
    linux内核系统调用和标准C库函数的关系分析
    Linux下内存映射文件的用法简介
    Hi35xx 通用GPIO 使用篇(板子3G电源控制脚说明)
    关于Linux用户名
    关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解
    PixelFormat 图像颜色的数据格式
    Ubuntu 搭建svn服务器 ,以及常见错误解决方案
    安装VisualSVN Server 报错The specified TCP port is occupied
    SVN服务器搭建和使用(三)
    SVN服务器搭建和使用(二)
  • 原文地址:https://www.cnblogs.com/zq-kjy/p/8622262.html
Copyright © 2011-2022 走看看