mysql use index用法_mysql use index、ignore index、force index用法
原创你去了哪里 最后发布于2019-10-18 14:05:48 阅读数 121 收藏
展开
1:use index:在你查询语句表名的后面,添加use index来提供你希望mysql去参考的索引列表,就可以让mysql不再考虑其他可用的索引。如:select * from table use index(name,age);
2:IGNORE INDEX 提示会禁止查询优化器使用指定的索引。在具有多个索引的查询时,可以用来指定不需要优化器使用的那个索引,还可以在删除不必要的索引之前在查询中禁止使用该索引。如:select * from table ignore index(name,age);
3:force index:强制mysql使用一个特定的索引。一般情况下mysql会根据统计信息选择正确的索引,但是当查询优化器选择了错误的索引或根本没有使用索引的时候,这个提示将非常有用。
需要注意的是use/ignore/force index(index)这里括号里的index是索引名,而不是列名。而且后面必须要加上where条件。
先查看表索引信息:
show index from student2\G
*************************** 1. row ***************************
Table: student2
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 4
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
Visible: YES
Expression: NULL
*************************** 2. row ***************************
Table: student2
Non_unique: 1
Key_name: se
Seq_in_index: 1
Column_name: sex
Collation: A
Cardinality: 4
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
Visible: YES
Expression: NULL
2 rows in set (0.07 sec)
可以看出列sex上有个普通索引,索引名是se。
explain select * from student2 where sex='a';
+----+-------------+----------+------------+------+---------------+------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+---------------+------+---------+-------+------+----------+-------+
| 1 | SIMPLE | student2 | NULL | ref | se | se | 2 | const | 1 | 100.00 | NULL |
+----+-------------+----------+------------+------+---------------+------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
使用到了sex列的索引,如果我们不想它sql语句使用sex列的索引,可以这样写:
explain select * from student2 ignore index(se) where sex='a';
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------------+
| 1 | SIMPLE | student2 | NULL | ALL | NULL | NULL | NULL | NULL | 4 | 33.33 | Using where |
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
可以看出这次并没有使用到索引。
如果你这样写sql就会报错:explain select * from student2 ignore index(sex) where sex='a';
ERROR 1176 (42000): Key 'sex' doesn't exist in table 'student2'
因为ignore index括号里要写索引名,而不是列明。
————————————————
版权声明:本文为CSDN博主「你去了哪里」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43740552/article/details/102623930
mysql use index用法_mysql use index、ignore index、force index用法相关推荐
- mysql字段类型原理_mysql数据类型和字段属性原理与用法详解
本文实例讲述了mysql数据类型和字段属性.分享给大家供大家参考,具体如下: 本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长 ...
- mysql replace报错_Mysql中replace与replace into的用法讲解
Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...
- mysql timestamp 差值_MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法(两个日期之间的差值)...
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: ...
- mysql中merge的用法_mysql中merge表存儲引擎用法介紹
mysql中merge表存儲引擎用法介紹: mysql的merge引擎類型允許你把許多結構相同的表合並為一個表.然后,你可以執行查詢,從多個表返回的結果就像從一個表返回的結果一樣.每一個合並的表必須有 ...
- mysql union all 别名_mysql union 与 union all 语法及用法
1.mysql union 语法 mysql union 用于把来自多个select 语句的结果组合到一个结果集合中.语法为: select column,......from tabl ...
- mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:
mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...
- mysql cascade的用法_MySql和Hibernate中关于cascade的用法
数据库里的cascade的用法,Mysql和Hibernate里面是不相同. 在数据库里,进行增加.修改.删除记录的时候,经常会涉及到父子关系的表. 例如:有省份表和城市表,其中城市表有一个外键pro ...
- Mysql中的force index和ignore index
前几天统计一个sql,是一个人提交了多少工单,顺便做了相关sql优化.数据大概2000多w. select CustName,count(1) c from WorkOrder where Creat ...
- mysql强制索引查询_MySQL 强制索引
MySQL 强制索引 简介:在本教程中,您将学习如何使用MySQL FORCE INDEX强制查询优化器使用指定的命名索引. 查询优化器是MySQL数据库服务器中的一个组件,它为SQL语句提供最佳的执 ...
最新文章
- leetcode-386 字典序排数
- AI一分钟 | 搜狗王小川:今年重点战略是输入法升级和发展机器翻译;北京无人驾驶试验场下半年正式运营
- python opencv投影变换增强
- python 树状图可视化_Python可视化25|seaborn矩阵图
- java 文件上传至oracle blob字段 实现
- Java 8的功能基础
- nRFgo Studio 和 Nrfjprog 无法找到JLinkARM.dll的解决方法
- Android----使用代码 建立gprs 闹钟 连接
- java注解教程 pdf_Java注解详解
- sql中的while循环_SQL While循环:了解SQL Server中的While循环
- matlab oj,Matlab习题(1)
- Q112:用Xcode调试程序(以PBRT-V3中的pbrt为例)
- 从SVN下载项目到本地的eclipse 工作空间
- 国外LEAD赚钱提现到WMZ,附赚钱项目
- 通过爬虫获取银行名称
- 基础正则表达式及常用正则表达式
- 「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java
- PHP 图片转base64编码 和 base64编码字符串转换成图片保存
- 庖丁(Paoding)分词的词典原理解析
- Hive中的map join、left semi join和sort merge bucket join
热门文章
- C#写14443读卡器上位机
- 让模型理解和推断代码背后的意图是预训练模型的核心挑战 | NPCon演讲实录
- 舌诊图像分析答辩总结
- python 玩具_分分钟学会使用Python编写玩具数据库
- VS中ID号的格式ID_,IDS_,IDC_之间有什么区别
- Go性能调优及相关工具使用(四)——性能调优工具pprof的使用
- vue复杂表格单元格合并 根据数据动态合并
- C++单冒号与双冒号的作用
- DevOps CI/CD之一: Jenkins和Github
- 最新版手机软件App下载排行网站源码/App应用商店源码