Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql索引失效

作者:望断天涯   发布日期:2026-04-23   浏览:53

-- 示例代码:索引失效的情况

-- 假设有一个表 `users`,其中有一个索引在 `username` 列上。
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100),
    INDEX idx_username (username)
);

-- 情况 1: 使用函数或表达式操作索引列,导致索引失效
SELECT * FROM users WHERE SUBSTRING(username, 1, 3) = 'abc';

-- 解释:在这个查询中,`SUBSTRING(username, 1, 3)` 对 `username` 列进行了函数操作,MySQL 无法直接使用 `idx_username` 索引,导致索引失效。

-- 情况 2: 使用 `LIKE` 模糊查询时,通配符出现在前面,导致索引失效
SELECT * FROM users WHERE username LIKE '%abc';

-- 解释:当 `LIKE` 的模式以 `%` 开头时,MySQL 无法利用索引来加速查询,因为索引是基于前缀匹配的。如果通配符在后面(如 `LIKE 'abc%'`),则可以使用索引。

-- 情况 3: 使用 `OR` 连接多个条件,其中一个条件不能使用索引,导致整个查询无法使用索引
SELECT * FROM users WHERE username = 'abc' OR email = 'abc@example.com';

-- 解释:虽然 `username` 列上有索引,但由于 `email` 列没有索引,且使用了 `OR`,MySQL 可能会选择全表扫描而不是使用索引。

上一篇:mysql information_schema

下一篇:mysql 删除重复数据

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站