有时某字段明明设置了索引,sql也用到该字段做条件,但最终却没有使用索引。
上图,cid为索引,选择性为59
explain select * from table_name where cid=142
上图显示,可用索引cid,但实际索引null。
这是mysql查询优化器决定的,因为基数太小,只有59条。这种情况下如果使用索引,相当于多引入了一个表,不如直接在原表中搜索快,所以mysql直接屏蔽掉cid索引。如果该表不作为其他表的连表使用,可用删掉cid索引。
有时某字段明明设置了索引,sql也用到该字段做条件,但最终却没有使用索引。
上图,cid为索引,选择性为59
explain select * from table_name where cid=142
上图显示,可用索引cid,但实际索引null。
这是mysql查询优化器决定的,因为基数太小,只有59条。这种情况下如果使用索引,相当于多引入了一个表,不如直接在原表中搜索快,所以mysql直接屏蔽掉cid索引。如果该表不作为其他表的连表使用,可用删掉cid索引。