• mysql的优化


    判断sql是否有问题?

    执行sql语句等待响应的快慢可以判断 一般优化至100ms以下(百万级以上数据)

    sql语句的表现

      1)sql语句的冗长

      2)type为All类型

      3)Rows超大

      ...可能是存在问题sql

    写sql的技巧

       1. 合理使用索引,索引少了查询慢;索引多了占用空间大,执行增删改语句的时候需要动态维护索引,影响性能

        1)join字段、distinct、order by 建议索引

        2)文档搜索类型使用全文索引

        3)复合索引要注意从左往右原则

      2. UNION ALL的执行效率比UNION高,UNION使用时会排重及排序,影响性能

      3. 减少使用 select * 的情况 sql返回的数据需要什么就拿什么 不要怕麻烦

      4. 不要使用 where 1=1 的情况,避免 order by rand()

      5. 建表时使用时间类型 datetime 类型

      6. 创建索引后要使用对应类型的值 才不会造成隐式转换 导致索引用不上的情况

    优化 执行计划 explain / desc

    字段解释
    id 每个被独立执行的操作标识,标识对象被操作的顺序,id值越大,先被执行,如果相同,执行顺序从上到下
    select_type 查询中每个select 字句的类型
    table 被操作的对象名称,通常是表名,但有其他格式
    partitions 匹配的分区信息(对于非分区表值为NULL)
    type 连接操作的类型
    possible_keys 可能用到的索引
    key 优化器实际使用的索引(最重要的列) 从最好到最差的连接类型为consteq_regrefrangeindexALL。当出现ALL时表示当前SQL出现了问题
    key_len 被优化器选定的索引键长度,单位是字节
    ref 表示本行被操作对象的参照对象,无参照对象为NULL
    rows 查询执行所扫描的元组个数(对于innodb,此值为估计值)
    filtered 条件表上数据被过滤的元组个数百分比
    extra 执行计划的重要补充信息,当此列出现Using filesort , Using temporary 字样时就要小心了,很可能SQL语句需要优化
  • 相关阅读:
    gojs常用API (中文文档)
    webpack的安装
    win10如何将wps设置成默认应用
    gojs常用API-画布操作
    Access中替代case when的方法 .
    C++ 11 中的右值引用
    形参前的&&啥意思?
    【C语言学习笔记】字符串拼接的3种方法 .
    java项目打jar包
    教你用DrawLayout 实现Android 侧滑菜单
  • 原文地址:https://www.cnblogs.com/fatetop/p/14303883.html
Copyright © 2020-2023  润新知