IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL索引失效 -> 正文阅读

[大数据]MySQL索引失效

环境:mysql-5.7.28

环境准备

-- 查看版本
select version();

-- 创建sys_user表
CREATE TABLE `sys_user`  (
  `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `telephone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `mail` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` int(3) NOT NULL,
  `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `status` int(2) NULL DEFAULT NULL,
  `operator_time` date NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `index_username_telephone_mail`(`username`, `telephone`, `mail`) USING BTREE,
  INDEX `index_password`(`password`) USING BTREE,
  INDEX `index_age`(`age`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- 插入测试数据
insert into `sys_user` 
(`id`, `username`, `telephone`, `mail`, `age`, `password`, `remark`, `status`, `operator_time`) 
values 
('000001', '张三', '12345678901', '12345678@qq.com', 18, '123456', NULL, 1, '1970-01-01'),
('111111', '李四', '12345678902', '123456789@qq.com', 19, 'abcdef', NULL, 2, '1970-01-01'),
('222222', '王五', '12345678903', '1234567890@qq.com', 20, '000000', NULL, 3, '1970-01-01'),
('333333', '赵六', '12345678904', '1234567891@qq.com', 21, '', NULL, NULL, '1970-01-01'),
('444444', '孙七', '12345678905', '1234567892@qq.com', 22, '123456', NULL, 5, '1970-01-01'),
('555555', '周八', '12345678906', '1234567893@qq.com', 22, 'abcdef', NULL, 5, '1970-01-01'),
('666666', '吴九', '12345678907', '1234567894@qq.com', 22, '000000', NULL, 5, '1970-01-01'),
('777777', '郑十', '12345678908', '1234567895@qq.com', 22, 'qwerty', NULL, 5, '1970-01-01');

索引失效场景

模糊查询

% 在前面

explain select * from sys_user where id like '%1%'
explain select * from sys_user where id like '%1'

在这里插入图片描述

数据类型不一致

错误的数据类型,如varchar字段使用了int

explain select * from sys_user where id = 111111

索引字段使用了函数

索引字段使用内部函数

explain select * from sys_user where length(id) = 2

null

非空字段,is null / is not null 都不走索引

explain select * from sys_user where id is null
explain select * from sys_user where id is not null

字段允许为空,is not null 不走索引

explain select * from sys_user where password is not null

索引字段有运算

索引字段进行(+,-,*,/,!, !=, )等运算

explain select * from sys_user where age + 1 = 20 
explain select * from sys_user where age != 20 

最左匹配原则

多列索引在使用了 select * 的情况下没有匹配到最左边的索引字段

explain select * from sys_user where mail = '12345678@qq.com'
explain select * from sys_user where telephone = '12345678901'
explain select * from sys_user where telephone = '12345678901' and mail = '12345678@qq.com' 

全表扫描快于索引

explain select * from sys_user where age = 22

not in

explain select * from sys_user where age not in (19,20)

or

or连接的字段没有索引

explain select * from sys_user where id = '000001' or status = 1
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:25:14  更:2022-05-05 11:25:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:45:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码