• mysql如何进行性能优化?


     通过explain关键字可以模拟优化器执行sql查询,分析查询语句或表结构的性能瓶颈。通过explain我们可以知道:

    1、表的读取顺序

    2、数据读取操作的类型

    3、哪些索引可以使用以及实际被使用的索引

    4、表置键的引用

    5、每张表有多少行被优化器查询

    通过实际案例来解释explain的使用以及具体分析:

     使用的方式很简单,只需要在sql语句前面加上explain关键字,然后运行。

    1、具体的字段代表的含义这里就不在赘述,请参考博文 https://blog.csdn.net/why15732625998/article/details/80388236 

    2、通过查询结果显示,三条语句都达到了ref级别,说明语句基本达标。但在Extra中显示表a中显示了Using temporary和Using filesort,这个就不nice了。

      distinct的使用产生了Using temporary,但这个去重操作又是不可避免的;order by的使用产生了Using filesort,Using filesort表示在索引之外需要额外进行外部的排序动作,一般可以通过合适的索引来减少或者避免。参考博文 https://www.cnblogs.com/jikuanhao/p/11147391.html 

    3、语句中我注释了查询条件b.is_del=0,是因为该列中存在null值,而null会使索引失效。

    4、如何查询表索引:show keys  from tablename 或 show index from tablename ,具体可见博文 https://blog.csdn.net/justry_deng/article/details/81458470

    -------------------------我是分割线-----------------------------------------

    一般不建议联表查询,很多高性能应用都会对关联查询进行分解,主要有如下优势:

    1、将查询分解后,执行单个表查询可以减少锁的竞争。

    2、一般高性能应用都会添加缓存机制,分解关联查询让缓存的效率更高(关联表时,若某个表发生变化,则整个缓存无法使用,但分表查询只对变化的表查询缓存有影响)。

    3、在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展。

    4、查询效率可能会有所提升,这要看具体的情况(单表in查询按主键或索引顺寻查询比随机关联查询效率高),其次我们知道mysql的单表查询效率比联表查询效率更高。

    5、可以减少冗余查询。

    6、有利于后期的分库分表。

  • 相关阅读:
    中国身份证号码验证
    防止盗链下载问题
    Microsoft .NET Pet Shop 4 架构与技术分析
    常用操作封装类
    ASP.NET 2.0页面框架的几处变化
    普通字符串与HTML相互转换的小经验
    HttpWebRequest实现读取天气预报信息
    事务回滚 c# .net代码
    CAJViewer,AdobeReader等阅读器实现金山词霸屏幕取词功能
    01背包问题动态规划详解
  • 原文地址:https://www.cnblogs.com/az4215/p/13703585.html
Copyright © 2020-2023  润新知