首页 >

mysql 哪些情况下索引失效 |php保存mysql数据库

mysql什么引用,mysql 时间表示,mysql强制走全表,c mysql 端口映射,mysql设置约束性,php保存mysql数据库mysql 哪些情况下索引失效 |php保存mysql数据库

那么,在什么情况下索引会失效呢?下面大家将一一介绍。

1. 对小表进行操作

对于小表而言,索引对性能的提升并不明显,甚至有时索引还会带来性能损失。因此,在对小表进行 DML 操作时,尽量避免使用索引。

2. 对索引列进行运算或函数操作

如果在 WHERE 子句中使用了对索引列进行运算或函数操作,MySQL 将不会使用该索引进行优化。比如:

SELECT * FROM users WHERE YEAR(create_time) = 2021;

上述查询中,create_time 字段建立了索引,但由于在 WHERE 子句中使用了 YEAR() 函数,MySQL 将不会使用索引。因此,可以考虑通过条件重写来避免使用函数,例如:

SELECT * FROM users WHERE create_time >= '2021-01-01' AND create_time<= '2021-12-31';

这样,MySQL 就可以使用索引进行优化。

3. 对字符串类型列进行模糊查询

如果在 WHERE 子句中使用了 LIKE 操作符并且搜索字符串以通配符开头(例如 ‘%abc’),或者使用了非前缀搜索(例如 ‘%bc%’),MySQL 将不会使用索引进行优化。因此,在对字符串类型的列进行模糊查询时,应该尽可能使用前缀搜索(例如 ‘abc%’)。

4. 索引列上存在函数、表达式或类型转换

如果在创建索引时,使用了函数、表达式或类型转换,那么索引将不会被使用。例如:

CREATE INDEX name_index ON users (CONCAT(first_name, ' ', last_name));

此时,如果查询中没有使用 CONCAT() 函数,MySQL 将不会使用索引 name_index 进行优化。

总的来说,在使用索引时,应该考虑到上述情况,避免索引的失效,从而提高MySQL的性能。


mysql 哪些情况下索引失效 |php保存mysql数据库
  • mysql性能调优必知必会 |微软官网mysql下载地址
  • mysql性能调优必知必会 |微软官网mysql下载地址 | mysql性能调优必知必会 |微软官网mysql下载地址 ...

    mysql 哪些情况下索引失效 |php保存mysql数据库
  • mysql截取字符串后缀 |mysql where or 查询
  • mysql截取字符串后缀 |mysql where or 查询 | mysql截取字符串后缀 |mysql where or 查询 ...

    mysql 哪些情况下索引失效 |php保存mysql数据库
  • mysql 新建用户名和密码 |mac mysql 服务启动命令
  • mysql 新建用户名和密码 |mac mysql 服务启动命令 | mysql 新建用户名和密码 |mac mysql 服务启动命令 ...