AImager

优化器使用索引合并后返回行数少于预期值

  • 链接: http://bugs.mysql.com/bug.php?id=69581
  • 版本: 5.6.X-『官方说5.6.14就修了,但实测5.6.16还有问题』
  • 引擎: InnoDB
  • 复现: 小数据量没出过问题,所以复现麻烦,但出现几个点的时候记得测试下,包括分区,同时用多个索引
  • 避免: 能升级的升级,不能升级的『比如阿里云截至2016-12-12号还是只有5.6的版本』想办法避免,比如直接建复合索引,不走优化器;或者直接禁用相关优化器设置SET optimizer_switch = 'index_merge_intersection=off';

DISTINCT后使用COUNT结果错误

  • 相似链接: http://bugs.mysql.com/bug.php?id=70038
  • 版本: 5.5.X-5.6.X
  • 引擎: InnoDB
  • 复现: 情况很多,我的情况是DISTINCT多个字段,有字段为空,且两个都有索引,那得到的数量就是排除了NULL值的数量;链接里面的则是对复合唯一索引里面的字段进行DISTINCT后,再COUNT的结果会出错。
  • 避免: 这个问题坑很多,所以最好避免使用COUNT(DISTINCT )的写法。