• mysql-为什么会选择错误的索引(10)


    为什么:

         mysql执行一条query语句,按步骤来就是建立连接-》词法分析-》语法分析-》优化器-》执行器-》innodb引擎。这里的问题出在优化器这里,优化器的其中一个作用就是执行计划的生成以及索引的选择。我们知道优化器选择索引有几个指标:扫描的行数,是否使用临时表,是否排序。我遇到的情况因为没使用排序可以只考虑扫描行数的问题,mysql统计扫描行数是采用的采样统计的方式取做统计,所以如果你的表数据平常不断地删除历史数据和新增数据,就会导致采样统计不准确。至于为什么要采样统计,因为一行行统计代价太高。

    怎么解决:

         解决方案有使用force index强行选择一个索引;修改sql语句,引导mysql使用我们期望的索引;新建更合适的索引或者删除误用的索引

  • 相关阅读:
    centos7手动搭建redis集群
    Xshell突破四个窗口限制
    Redis官方集群规范
    Redis官方集群教程
    centos7 更新阿里YUM源
    gitlab配置ssh
    Java前端控制器模式~
    Java数据访问对象模式
    Java组合实体模式~
    Java业务代理模式~
  • 原文地址:https://www.cnblogs.com/enchaolee/p/11696860.html
Copyright © 2020-2023  润新知