-- 示例代码:索引失效的情况
-- 假设有一个名为 `users` 的表,包含以下字段:
-- id (主键), name, age, created_at
-- 1. 使用函数导致索引失效
EXPLAIN SELECT * FROM users WHERE SUBSTRING(name, 1, 3) = 'abc';
-- 解释:在 `name` 字段上使用了 SUBSTRING 函数,MySQL 无法使用该字段上的索引,导致全表扫描。
-- 2. 使用 <> 或 != 导致索引失效
EXPLAIN SELECT * FROM users WHERE age <> 30;
-- 解释:使用 <> 或 != 操作符时,MySQL 可能无法有效地使用索引,尤其是当列上有多个值时。
-- 3. 使用 OR 语句导致索引失效
EXPLAIN SELECT * FROM users WHERE age = 30 OR name = 'John';
-- 解释:当 OR 语句中的条件涉及不同的列时,MySQL 可能无法有效地使用索引,导致全表扫描。
-- 4. 类型不匹配导致索引失效
EXPLAIN SELECT * FROM users WHERE age = '30';
-- 解释:`age` 是整数类型,但查询中使用了字符串 '30',类型不匹配导致索引失效。
-- 5. 使用 LIKE 以通配符开头导致索引失效
EXPLAIN SELECT * FROM users WHERE name LIKE '%John%';
-- 解释:LIKE 语句以通配符 % 开头,MySQL 无法使用索引进行快速查找,导致全表扫描。
以上示例展示了几种常见的 MySQL 索引失效情况。
上一篇:mysql 查询表
下一篇:mysql 替换函数
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站