• 关于SQL优化


    一、

    第二部分

    Calls:调用次数

    R/Call:平均每次查询耗时情况 V/M:方差均值比

    第三部分:详细SQL慢查询参数统计

    Rows sent、Rows examine 差别越大,表示做了更多的无用功,索引利用效率差

    二、线上数据库打开了慢查询日志记录功能的话,对数据库的性能影响大吗?

    肯定有一定的影响,微弱,日志文件占用物理磁盘空间,

    三、哪些SQL需要优化:

    1、查询次数多,而且占用时间比较长的SQL

    2、IO大的SQL:Rows examine数值比较大的SQL,(是否有必要?是否可以使用limit)

    3、未使用索引或者索引利用率不高的SQL(pt-query-digest第三部分 Rows sent、Rows examine 差别大

    四、BTree索引的有效利用与限制

    索引生效的情况:

    1、匹配最左前缀

    2、全值匹配

    3、匹配列前缀

    4、匹配范围值

    5、精确匹配某列并范围匹配另外一列

    全值匹配我最爱,最左前缀要遵守;

    带头大哥不能死,中间兄弟不能断;

    索引列上少计算,范围之后全失效;

    Like百分写最右,覆盖索引不写星;

    不等空值还有or,索引失效要少用。

    BTree索引的限制:

    1、如果不是按照索引的最左列开始查找,则无法使用索引,

    2、不能跳过索引中的列

    3、如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找,

    五、分析SQL低效的原因

    1、explain

    ①索引利用情况

    ②排序

    ③临时表

    ④回表读行

    ⑤行扫描情况

    2、Profiles SQL各个子任务资源消耗情况

    六、修改索引

    1、是否有无用的索引需要删除

    2、是否可以适当建立组合索引

    3、组合索引的顺序是否需要调整

    4、前缀索引

    5、覆盖索引的利用

    七、重写SQL

    1、是否因为列的计算导致索引失效

    2、是否有不需要的列别查询:select *

    3、是否有不适当的关联关系导致过多读行

    4、是否可以将复杂的SQL拆分

    5、是否可以指定使用更好的索引:USE Index

  • 相关阅读:
    gvim小操作
    gvim2笔记
    用JavaScript实现MD5,SHA1加密
    MYSQL性能优化(转)
    开源了,开放我的仿ext控件集
    个人js作品集,仿ext风格(改)
    sql查询 注意事项
    共轭矩阵
    wchar 转 int
    对象不能从 DBNull 转换为其他类型
  • 原文地址:https://www.cnblogs.com/1394htw/p/11922173.html
Copyright © 2020-2023  润新知