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 

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

MySQL实现强制查询走索引和强制查询不缓存的更多相关文章

  1. 强制MySQL查询走索引和强制查询不缓存

    有些情况下,表中创建了索引但是EXPLAIN的查看执行计划的时候发现并没有走索引.是因为优化器认为该语句不使用索引效率更好. 当然也可以强制走索引.类似: SELECT uid,uname FROM ...

  2. 【MySQL 原理分析】之 Explain & Trace 深入分析全模糊查询走索引的原理

    一.背景 今天,交流群有一位同学提出了一个问题.看下图: 之后,这位同学确实也发了一个全模糊查询走索引的例子: 到这我们可以发现,这两个sql最大的区别是:一个是查询全字段(select *),而一个 ...

  3. MySQL学习-MySQL内置功能_索引与慢查询

    1.索引基础 1.1 介绍 (1.)为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂 ...

  4. Oracle中查询走索引的情况

    1.对返回的行无任何限定条件,即没有where子句 2.未对数据表与任何索引主列相对应的行限定条件例如:在City-State-Zip列创建了三列复合索引,那么仅对State列限定条件不能使用这个索引 ...

  5. oracle数据库使用hint来让模糊查询走索引

    在没有创建数据直方图之前,查询优化器是cbo,可能不会选择代价最低(效率最高)的方式查询. 先创建表 --日语假名表 CREATE TABLE JAPANESE_SOUNDMARK ( ID INTE ...

  6. mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?

    情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b, ...

  7. MySQL如何选择合适的索引

    先来看一个栗子 EXPLAIN select * from employees where name > 'a'; 如果用name索引查找数据需要遍历name字段联合索引树,然后根据遍历出来的主 ...

  8. 【开发总结】order by 为什么没有走索引?

    1.  现象 表结构如下 CREATE TABLE `ACT_HI_INST` ( `ID` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '主键', ` ...

  9. 《MySQL面试小抄》索引失效场景验证

    我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统,自己无法快速定位到关键问题点!!! 本期主要面试考点 面试官考点之什么情况下会索 ...

随机推荐

  1. 多进程编程之用户ID和用户组ID

      实际用户ID(real user id):用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录后一个UNIX系统后就唯一确定了他的uid:(实际用户组ID类似) 有效用户ID(effect ...

  2. CF702F T-Shirts

    题目描述 The big consignment of t-shirts goes on sale in the shop before the beginning of the spring. In ...

  3. ajax发送post请求遇到的坑

    前端小白的我. 用django-rest-framework写好了一个接口.如下,就接收两个字符串参数. 前端写了一个简单的提交post请求到这个接口,如下 浏览器提交请求后,一直提示 400 Bad ...

  4. Valid Parentheses - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Valid Parentheses - LeetCode 注意点 考虑输入为空的情况 解法 解法一:如果是'('.'{'.'['这三者就入栈,否则就判断栈 ...

  5. 【codeforces 528D】 Fuzzy Search

    http://codeforces.com/problemset/problem/528/D (题目链接) 题意 给定母串和模式串,字符集大小为${4}$,给定${k}$,模式串在某个位置匹配当且仅当 ...

  6. 【bzoj3527】 Zjoi2014—力

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 (题目链接) 题意 $${F_i=\sum_{j<i} {\frac{q_iq_j}{( ...

  7. java 面试题 -- 线程 按序 交替

    编写一个程序,开启 3 个线程,这三个线程的 ID 分别为A.B.C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示.如:ABCABCABC…… 依次递归? packag ...

  8. vue写template的4种形式

    1.template标签(非单文件组件) <template id="t1"> <h2>66666666</h2> </template& ...

  9. python 中的 %s,%r,__str__,__repr__

    1.%s,%r的区别 在进行格式化输出时,%r 与 %s 的区别就好比 repr() 函数处理对象与 str() 函数处理对象的差别. %s ⇒ str(),比较智能: %r ⇒ repr(),处理较 ...

  10. python中的常用模块

    python中常用的模块 time: 1)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time.secs参数未提供,则以当前时间为准. 2)time.gmt ...