mysql索引是自动使用的么

little bottle
发布: 2020-09-16 11:41:48
原创
3190 人浏览过

mysql索引可以自动使用,同时用户也可以强制使用。MYSQL在创建索引后对索引的使用方式分为两种:一种是由数据库的查询优化器自动判断是否使用;另一种是用户可在写SQL语句时强制使用索引。

mysql索引是自动使用的么

MYSQL在创建索引后对索引的使用方式分为两种:其一,由数据库的查询优化器自动判断是否使用索引;其二,用户可在写SQL语句时强制使用索引。

(推荐教程:mysql视频教程

MYSQL在创建索引后对索引的使用方式分为两种:

1、由数据库的查询优化器自动判断是否使用索引;

2、用户可在写SQL语句时强制使用索引

下面就两种索引使用方式进行说明

第一种,自动使用索引。

数据库在收到查询语句后会查看where语句后面的查询条件,同时查看在表上面有哪些索引,然后根据查询条件和索引进行匹配。
查询条件和索引的匹配包括查询字段与索引字段的匹配和查询类型和索引类型的匹配。前者很好理解,就是查询条件的属性上要建有索引,后者则是说查询条件必须能够使用索引,比如等值判断和范围查询可以使用B+树索引,而hash索引只能适用于等值判断。

在找到与查询条件匹配的索引后,就是进行代价估计来决定是否使用索引,代价估计主要根据要访问的就数量,一般来说如果通过索引访问的记录数量占全表记录数量15%以上,则不会使用索引而是使用全表扫描,因为此时使用索引的代价更大。在大多数情况下使用索引是会提高效率的。

经过优化器的判断,最终会决定是否使用索引。

第二种,强制使用索引,主要是通过SQL语句实现的

select * from table force index(PRI) limit 2;(强制使用主键)
select * from table force index(ziduan1_index) limit 2;(强制使用索引"ziduan1_index")
select * from table force index(PRI,ziduan1_index) limit 2;(强制使用索引"PRI和ziduan1_index")
登录后复制

也可以禁止索引的使用

select * from table ignore index(PRI) limit 2;(禁止使用主键)
select * from table ignore index(ziduan1_index) limit 2;(禁止使用索引"ziduan1_index")
select * from table ignore index(PRI,ziduan1_index) limit 2;(禁止使用索引"PRI,ziduan1_index")
登录后复制

以上是mysql索引是自动使用的么的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板