https://juejin.cn/post/7161964571853815822

前言

SQL 写不好 加班少不了 日常工作中SQL 是必不可少的一项技术 但是很多人不会过多的去关注SQL问题 一是数据量小 二是没有意识到索引的重要性 本文主要是整理 SQL失效场景 如果里面的细节你都知道 那你一定是学习能力比较好的人 膜拜 写完这篇文章 我感觉自己之前知道的真的是 “目录” 没有明白其中的内容 如果你能跟着节奏看完文章 一定会有收获 至少我写完感觉思维通透很多 以后百分之九十的 SQl索引问题 和 面试这方面问题都能拿捏两

文章 字数 六千余字 观看时长十分钟 练习时长两个半小时 持续补充ing

文章概要

[https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/76b70720b0cb422fb2583fb80a745e99~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/76b70720b0cb422fb2583fb80a745e99~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?)

索引失效 整理

基础数据准备

准备一个数据表作为 数据演示 这里面一共 创建了三个索引


java 代码解读
复制代码
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `s_code` int(100) NULL DEFAULT NULL,
  `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `height` double NULL DEFAULT NULL,
  `classid` int(11) NULL DEFAULT NULL,
  `create_time` datetime(0) NOT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `普通索引`(`height`) USING BTREE,
  INDEX `联合索引`(`sname`, `s_code`, `address`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '学生1', 1, '上海', 170, 1, '2022-11-02 20:44:14');
INSERT INTO `student` VALUES (2, '学生2', 2, '北京', 180, 2, '2022-11-02 20:44:16');
INSERT INTO `student` VALUES (3, '变成派大星', 3, '京东', 185, 3, '2022-11-02 20:44:19');
INSERT INTO `student` VALUES (4, '学生4', 4, '联通', 190, 4, '2022-11-02 20:44:25');

问题思考

上面的SQL 我们已经创建好基本的数据 在验证之前 先带着几个问题

[https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/06be80e0d7c04d639e3a694c907b4da8~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/06be80e0d7c04d639e3a694c907b4da8~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?)

我们先从上往下进行验证

最左匹配原则