MySQL实现强制查询走索引和强制查询不缓存

0.表结构如下:(包含两个索引)

复制代码
Create Table: CREATE TABLE `user` (
  `userID` varchar(40) NOT NULL,
  `userCode` varchar(20) DEFAULT NULL,
  `userName` varchar(25) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `userSort` varchar(30) DEFAULT NULL,
  `userStuTeaNum` varchar(50) DEFAULT NULL,
  `userUnitName` varchar(30) DEFAULT NULL,
  `userUnitNum` varchar(30) DEFAULT NULL,
  `isUse` varchar(2) DEFAULT NULL,
  `remark1` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`userID`),
  UNIQUE KEY `userCodeIndex` (`userCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
复制代码

 

 

前提是会使用explain分析SQL语句:

2.强制走索引

(1)直接查询使用的是userCodeIndex

复制代码
mysql> EXPLAIN SELECT userID FROM USER\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: USER
   partitions: NULL
         type: index
possible_keys: NULL
          key: userCodeIndex
      key_len: 63
          ref: NULL
         rows: 3
     filtered: 100.00
        Extra: Using index
1 row in set, 1 warning (0.00 sec)
复制代码

 

(2)强制使用主键索引

语法:

SELECT userID FROM USER FORCE INDEX(PRIMARY);

 

注意:INDEX(indexName)里面的参数是index的名称,而不是列名,如果不知道index名称可以通过下列方式查询:

mysql> show index from tblname;

mysql> show keys from tblname;

 

顺便说一句:key和index的区别:key有两个作用,一是约束字段,二是辅助查询(具备constraint和index的意义)

                index只是辅助查询,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。

 

 

例如:强制使用userCodeIndex

复制代码
mysql> EXPLAIN SELECT userID FROM USER FORCE INDEX(PRIMARY)\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: USER
   partitions: NULL
         type: index
possible_keys: NULL
          key: PRIMARY
      key_len: 122
          ref: NULL
         rows: 3
     filtered: 100.00
        Extra: Using index
1 row in set, 1 warning (0.00 sec)
复制代码

 

 

3.强制不走缓存

SELECT  SQL_NO_CACHE  * FROM USER 

 

 

 

在这里只是做记录,项目中还没有遇到这种需求。。。。。。。。。。。。。。。。。。。。。。。

 

posted @   QiaoZhi  阅读(10496)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示