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")
索引的意义 ·索引在数据库中的作用相当于目录在书籍中的作用类似,都用来提高查找信息的速度。 ·索引是一个表中所包含值的列表,其中注明了表中包含各个值的行所在的存储位置,使用索引查找数据时,先从索引对象中获得相关列的存储位置,然后再直接去其存储位置查找所需信息,这样就无需对这个表进行扫描,从而可以快速的找到所需数据。
主要有这些:
PRIMARY, INDEX, UNIQUE 这3种是一类
PRIMARY 主键。 就是 唯一 且 不能为空。
INDEX 索引,普通的
UNIQUE 唯一索引。 不允许有重复。
FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。
索引的目的是提高你的查询速度,当然附带的后果就是会降低你的数据更新的性能,索引的创建依据一般都是根据你实际使用情况而定,也就是说你要用哪个或者那几个字段作为查询条件,就在这个字段或者这些字段上面建立索引,也就是所谓的单字段索引和复合字段索引,比如:
select
from
student
where
id
=
1
上面这种情况那自然就是在id上建立索引,复合索引以此类推,索引不是随意创建的,如果你用的上,那才能建立索引,如果用不上创建索引反而会降低你的数据库性能。
建议楼主去查一下有关“利用索引查询数据提高性能”之类的帖子,这样你就能对索引的意义有比较深刻的了解了。
定义:存在于关系型数据库中,是一种与表有关的数据库对象
以存储方式分类可以分为
B树
位图
优点:提高检索速度
使用原则(何时需要创建索引):
哪些表需要创建索引:
某表常被访问或某表数据量较大
通常以哪些字段作为索引:
某字段常被作为查询条件
以上就是关于mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引全部的内容,包括:mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引、解释mysql中什么是索引它的作用是什么、MySQL有哪些索引类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)