原创你去了哪里 最后发布于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用法相关推荐

  1. mysql字段类型原理_mysql数据类型和字段属性原理与用法详解

    本文实例讲述了mysql数据类型和字段属性.分享给大家供大家参考,具体如下: 本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长 ...

  2. mysql replace报错_Mysql中replace与replace into的用法讲解

    Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...

  3. mysql timestamp 差值_MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法(两个日期之间的差值)...

    MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: ...

  4. mysql中merge的用法_mysql中merge表存儲引擎用法介紹

    mysql中merge表存儲引擎用法介紹: mysql的merge引擎類型允許你把許多結構相同的表合並為一個表.然后,你可以執行查詢,從多個表返回的結果就像從一個表返回的結果一樣.每一個合並的表必須有 ...

  5. mysql union all 别名_mysql union 与 union all 语法及用法

    1.mysql   union  语法 mysql   union 用于把来自多个select  语句的结果组合到一个结果集合中.语法为: select  column,......from tabl ...

  6. mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:

    mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...

  7. mysql cascade的用法_MySql和Hibernate中关于cascade的用法

    数据库里的cascade的用法,Mysql和Hibernate里面是不相同. 在数据库里,进行增加.修改.删除记录的时候,经常会涉及到父子关系的表. 例如:有省份表和城市表,其中城市表有一个外键pro ...

  8. Mysql中的force index和ignore index

    前几天统计一个sql,是一个人提交了多少工单,顺便做了相关sql优化.数据大概2000多w. select CustName,count(1) c from WorkOrder where Creat ...

  9. mysql强制索引查询_MySQL 强制索引

    MySQL 强制索引 简介:在本教程中,您将学习如何使用MySQL FORCE INDEX强制查询优化器使用指定的命名索引. 查询优化器是MySQL数据库服务器中的一个组件,它为SQL语句提供最佳的执 ...

最新文章

  1. leetcode-386 字典序排数
  2. AI一分钟 | 搜狗王小川:今年重点战略是输入法升级和发展机器翻译;北京无人驾驶试验场下半年正式运营
  3. python opencv投影变换增强
  4. python 树状图可视化_Python可视化25|seaborn矩阵图
  5. java 文件上传至oracle blob字段 实现
  6. Java 8的功能基础
  7. nRFgo Studio 和 Nrfjprog 无法找到JLinkARM.dll的解决方法
  8. Android----使用代码 建立gprs 闹钟 连接
  9. java注解教程 pdf_Java注解详解
  10. sql中的while循环_SQL While循环:了解SQL Server中的While循环
  11. matlab oj,Matlab习题(1)
  12. Q112:用Xcode调试程序(以PBRT-V3中的pbrt为例)
  13. 从SVN下载项目到本地的eclipse 工作空间
  14. 国外LEAD赚钱提现到WMZ,附赚钱项目
  15. 通过爬虫获取银行名称
  16. 基础正则表达式及常用正则表达式
  17. 「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java
  18. PHP 图片转base64编码 和 base64编码字符串转换成图片保存
  19. 庖丁(Paoding)分词的词典原理解析
  20. Hive中的map join、left semi join和sort merge bucket join

热门文章

  1. C#写14443读卡器上位机
  2. 让模型理解和推断代码背后的意图是预训练模型的核心挑战 | NPCon演讲实录
  3. 舌诊图像分析答辩总结
  4. python 玩具_分分钟学会使用Python编写玩具数据库
  5. VS中ID号的格式ID_,IDS_,IDC_之间有什么区别
  6. Go性能调优及相关工具使用(四)——性能调优工具pprof的使用
  7. vue复杂表格单元格合并 根据数据动态合并
  8. C++单冒号与双冒号的作用
  9. DevOps CI/CD之一: Jenkins和Github
  10. 最新版手机软件App下载排行网站源码/App应用商店源码