1. 首页
  2. 数据库
  3. MySQL
  4. MySQL选错索引的原因以及解决方案

MySQL选错索引的原因以及解决方案

上传者: 2021-08-26 06:45:24上传 PDF文件 291.31 KB 热度 18次

MySQL 中,可以为某张表指定多个索引,但在语句具体执行时,选用哪个索引是由 MySQL 中执行器确定的。那么执行器选择索引的原则是什么,以及会不会出现选错索引的情况呢?先看这样一个例子:创建表 Y,设置两个。MySQL 在执行语句前,其实并不能准确的计算出扫描的行数,而是通过数学统计信息来估算记录数。在一个索引上不同值的个数,称为“基数”。MySQL 是在获取基数时,实际上是采用。这里选择 b 作为索引的原因,是因为优化器看到了后面的 但从实际的执行时间来看,索引 a 执行时间更短,所以这里 MySQL 又选择了错误的索引。行数的扫描,主要和基数有关,而基数的统计则是通过统计抽样决定的,进而预估的行数可能会是不准确的。

下载地址
用户评论