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


    为什么:

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

    怎么解决:

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

  • 相关阅读:
    大话设计模式--中介者模式
    大话设计模式--职责链模式
    大话设计模式--命令模式
    大话设计模式--桥接模式
    迷宫求解
    stuct、class、typedef
    软件测试
    Scrapy初探
    python练习
    链表基础
  • 原文地址:https://www.cnblogs.com/enchaolee/p/11696860.html
Copyright © 2020-2023  润新知