zoukankan      html  css  js  c++  java
  • Mysql优化系列之查询性能优化前篇3(必须知道的几个事实)

    事实一:临时表没有任何索引

      最常见的临时表莫过于在from子句中写子查询,遇到这种情况,Mysql会先将其查询结果放到一张临时表中,

    然后将这个临时表当做普通表对待

    事实二:执行计划优化

      大多数的sql语句在执行计划中都会被优化,这些优化都是mysql在内部评估分析后优化的,比如我们的关联查询

    中的表关联顺序优化,顺便说一下,执行计划也是一个数据结构

    事实三:排序,尽量用到索引

      排序是一个成本很高的操作,记住这一点

    事实四:IN查询有专门的优化策略

      但是,不要在in()查询中再使用子查询,有两种方式:使用GROUP_CONCAT(),或者EXISTS(),具体的怎么写

    熟练的老手稍微百度下肯定能改写出来

    事实五:没有绝对真理,一切以测试结果为依据

      不管做什么优化,首先需要有一个数据量接近线上环境的库,作为你的查询测试库,一些难以比较查询效率的sql,

    都应该以测试实践为准

    最后给出一个彩蛋hint,听说oracle的hint用法超多,mysql我还没用过。。。惭愧,难道是我的业务查询都用不到???

    前篇就简单介绍这么多,后面开始陆续总结一些特定的sql查询的优化,俗称干货

  • 相关阅读:
    linux下的内存映射函数mmap详解及示例代码
    Android平台上使用属性系统(property system)
    Android筆記
    Android Prelink
    DataGridView BindingSource BindNavigator
    可排序的ListView
    开源2D绘图组件ZedGraph
    BackgroundWorker示例
    级联datagridview 利用datarelation和bindingsource
    继承DataGridView
  • 原文地址:https://www.cnblogs.com/yb38156/p/9833921.html
Copyright © 2011-2022 走看看