我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql索引如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql索引如何使用

小编给大家分享一下mysql索引如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、索引是什么

1.索引简介
索引其实是以文件形式存储在磁盘上的一种数据结构,索引检索需要磁盘I/O操作。与主存不同,磁盘I/O存在机械运动耗费,因此磁盘I/O的时间消耗是巨大的。

2.IO简介
IO在计算机中指 输入与输出,由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。生活例子: 需要记住关键的事情都需要写在笔记本上,需要的时候在拿出来看,每次去笔记本上看记录时就是IO,如果记忆好的人会记住这件事情,直接就能读出来,这就是缓存(计算机里面更加不能一直保存)。

二、索引算法

1.数据库基本都是使用B+Tree算法实现

2.数据库索引是使用磁盘I/O次数来评价索引结构的优劣

3.B-Tree
(1) B-Tree的定义,可知检索一次最多需要访问h-1个节点(根节点常驻内存)。数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入

(2) 实际实现B-Tree还需要使用如下技巧:每次新建节点时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页里,加之计算机存储分配都是按页对齐的,就实现了一个node只需一次I/O

(3) 采用B-Tree存储结构,搜索时I/O次数一般不会超过3次,所以用B-Tree作为索引结构效率是非常高的,但是B-tree中的节点根据实际情况可以包含大量的关键字信息和分支

4.B+Tree
(1) B-Tree的搜索复杂度为O(h)=O(logdN),所以树的出度d越大,深度h就越小,I/O的次数就越少。B+Tree恰恰可以增加出度d的宽度,因为每个节点大小为一个页大小,所以出度的上限取决于节点内key和data的大小

(2) 由于B+Tree的内节点去掉了data,因此可以拥有更大的出度,从而拥有更好的性能

三、聚集索引与非聚集索引

1.聚簇索引
(1) 聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。聚簇索引要比非聚簇索引查询效率高很多

(3) 每个表只能有一个聚簇索引,因为一个表中的记录只能以一种物理顺序存放

(4) Innodb的默认索引

2.非聚簇索引

(1) 非聚集索引,类似于图书的附录,那个专业术语出现在哪个章节,这些专业术语是有顺序的,但是出现的位置是没有顺序的。但是,一个表可以有不止一个非聚簇索引

(2) 实现原理就是使用叶子节点存储引用行的主键(可以说是聚集索引)

(3) 聚集索引是非聚簇索引的一种索引,即主+辅索引的索引方式,这种主+辅索引的好处是,当发生数据行移动或者页分裂时,辅助索引树不需要更新,因为辅助索引树存储的是主索引的主键关键字,而不是数据具体的物理地址

(4)所以非聚簇索引要访问两次索引

四、索引的类型

1.UNIQUE(唯一索引):不可以出现相同的值,可以有NULL值

2.INDEX(普通索引):允许出现相同的索引内容

3.PROMARY KEY(主键索引):不允许出现相同的值

4.FULLTEXT INDEX(全文索引):可以针对值中的某个单词,但效率很差

5.组合索引:实质上是将多个字段建到一个索引里,列值的组合必须唯一

五、索引技巧

1.索引不会包含有NULL的列

(1) 只要列中包含有NULL值,都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此符合索引就是无效的

2.使用短索引

(1)对串列进行索引,如果可以就应该指定一个前缀长度。例如,如果有一个char(255)的列,如果在前10个或20个字符内,多数值是唯一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作

3.索引列排序

(1) mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作,尽量不要包含多个列的排序,如果需要最好给这些列建复合索引

4.like语句操作

(1) 一般情况下不鼓励使用like操作,如果非使用不可,注意正确的使用方式。like ‘%aaa%’不会使用索引,而like ‘aaa%’可以使用索引

5.不要在列上进行运算

6.不使用NOT IN 、<>、!=操作,但<,<=,=,>,>=,BETWEEN,IN是可以用到索引的

7.索引要建立在经常进行select操作的字段上

(1) 这是因为,如果这些列很少用到,那么有无索引并不能明显改变查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求

8.索引要建立在值比较唯一的字段上

9.对于那些定义为text、image和bit数据类型的列不应该增加索引。因为这些列的数据量要么相当大,要么取值很少

10.在where和join中出现的列需要建立索引

11.where的查询条件里有不等号(where column != …),mysql将无法使用索引

12.如果where字句的查询条件里使用了函数(如:where DAY(column)=…),mysql将无法使用索引

13.在join操作中(需要从多个数据表提取数据时),mysql只有在主键和外键的数据类型相同时才能使用索引,否则及时建立了索引也不会使用

14.explain可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句

六、索引与锁

1.锁用到索引就是行锁,如果没有用到索引就是表锁,所以操作的数据必须用到锁才行

(1) 如果没有建立索引的话,在进行数据选取或者定位的时候是通过全表扫描的形式来进行的,这样就会形成表锁,要是有索引的话就会直接定位到指定的行,就是形成行锁,这里注意在更新数据时假如没用到索引也会全表扫描

以上是mysql索引如何使用的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql索引如何使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL索引如何创建和使用索引

创建MySQL索引可以通过以下两种方式:使用CREATE INDEX语句创建索引:CREATE INDEX index_name ON table_name (column_name);例如,要在名为students的表上创建一个名为stu
MySQL索引如何创建和使用索引
2024-03-06

Mysql覆盖索引如何使用

在MySQL中,覆盖索引是指索引包含了查询需要的所有字段,这样MySQL可以直接使用索引来返回查询结果,而不需要再去访问数据表。这可以提高查询性能,减少IO操作。要使用覆盖索引,需要创建一个包含查询需要的所有字段的索引。然后在查询时,只选
Mysql覆盖索引如何使用
2024-04-09

如何在mysql中使用哈希索引

这期内容当中小编将会给大家带来有关如何在mysql中使用哈希索引,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、Hash索引应进行二次搜索。使用哈希索引两次搜索,第一次找到相应的行,第二次读取数据,但频
2023-06-15

如何在MySQL中使用前缀索引?

如何在MySQL中使用前缀索引?MySQL是一款非常流行的关系型数据库管理系统,它支持使用索引来提高查询性能。在某些情况下,如果数据库表中的列具有较长的值,可以考虑使用前缀索引来减少索引的大小并提高查询性能。本文将介绍如何在MySQL中使
如何在MySQL中使用前缀索引?
2024-03-15

Mysql如何查看是否使用到索引

目录mysql查看是否使用到索引EXPLAIN列的解释MySQL查看索引使用情况总结Mysql查看是否使用到索引mysql数据库创建索引优化之后,在查询时想看下是否使用到索引,使用执行计划查看:mysql> explain SELEC
2022-12-22

mysql如何加索引

如何为 mysql 表格添加索引MySQL 索引是一种数据结构,它可以提高查询性能。它通过对数据列进行排序和分组,从而减少了数据库在执行查询时需要扫描的行数。添加索引的步骤:确定要索引的列:选择经常用于查询的列,尤其是那些用于过滤或排序
mysql如何加索引
2024-06-12

如何使用 PHP 在 MySQL 表中创建索引?

要使用 mysql 创建索引,可以使用 create index 语句。语法:create index index_name on table_name (column_name);建立索引时需考虑索引列选择、索引类型和索引命名等事项。例如
如何使用 PHP 在 MySQL 表中创建索引?
2024-05-12

编程热搜

目录