mysql根据索引去修改数据,会走索引吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql根据索引去修改数据,会走索引吗相关的知识,希望对你有一定的参考价值。

参考技术A 不一定,要看情况,具体是由mysql优化器内部决定是全表扫描还是索引查找,用效率较高的一种方式。

针对索引字段的唯一性不高的情况下(索引的"区分度"低),优化器可能会选择全表扫描,而不是走索引。这可能是因为等值查询符合条件的记录太多了,导致了mysql认为全表扫描比用索引查找更快。
比如你对唯一性不高的字段(如性别:男/女)加了索引,这样通过索引去查找可能还需回表,还不如直接全表扫描!
若in中的数据量较大时,基本就不走索引了。如果你索引字段是一个unique,in可能就会用到索引。
如果你一定要用索引,可以用 force index。可能也和MySQL版本有关(5.6以后有做in的查询优化)

MySQL like 在啥情况下会走索引

参考技术A

mysql在使用like查询中,能不能用到索引?在什么地方使用索引呢?

在使用like的时候,如果使用‘%%’,会不会用到索引呢?

上面的结果是全表扫描( type == ALL ),并没有使用到索引。

只是使用一个%的查询结果:

EXPLAIN SELECT * FROM user WHERE username LIKE \'ptd_%\';

这个使用到了索引( type == range )。

在前面使用%时也是全表扫描,没有使用到索引。

综上,mysql在使用like查询的时候只有 不以%开头的时候,才会使用到索引

以上是关于mysql根据索引去修改数据,会走索引吗的主要内容,如果未能解决你的问题,请参考以下文章

MySQL like 在啥情况下会走索引

mysql建索引导致insert失败

mysql不等于走索引吗

oracle两个表varchar2长度不一致会走索引吗?还有char型和varchar2型的字段关联会走索引吗?

分析SQL执行过程中,哪些SQL条件会走索引

mysql索引