MySQL进阶之索引

 2023-09-06 阅读 18 评论 0

摘要:索引 索引是什么 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度 索引目的 索引的目的在于提高查询效率,可

索引

索引是什么

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度

索引目的

索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的.

索引原理

除了词典,生活中随处可见索引的例子,如火车站的车次表、图书的目录等。它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。

数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>、<、between、in)、模糊查询(like)、并集查询(or)等等。数据库应该选择怎么样的方式来应对所有的问题呢?我们回想字典的例子,能不能把数据分成段,然后分段查询呢?最简单的如果1000条数据,1到100分成第一段,101到200分成第二段,201到300分成第三段……这样查第250条数据,只要找第三段就可以了,一下子去除了90%的无效数据。

索引相关操作 提高查询的效率

  • 查看表的索引

show index from 表名;
  • 创建索引
-- 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
-- 字段类型如果不是字符串,可以不填写长度部分
create index 索引名称 on 表名(字段名称(长度))alter table 表名 add index 索引名称(字段名称(长度))
  • 删除索引
drop index 索引名称 on 表名;

常用的索引有三种 主键索引、普通索引和唯一索引

索引不是越多越好,哪些字段需要建索引呢?主键百分之百用到了索引,就是主键索引;(当你在一个表中设置了主键或者外键的时候,MySQL会默认给他加上索引,所以使用主键或外键进行查找操作的时候会非常的快,但是实际使用中对主键或者外键的直接使用是比较少的)

  • 普通索引key
create index 索引名称 on 表名(字段名称(长度))
alter table 表名 add index 索引名称(字段名称(长度))

唯一索引,unique,保证这个字段中的数据不会重复,如:一个字段记录了身份证号,此时就可以给他加上唯一索引保证数据不会重复;

create unique index 索引名称 on 表名(字段名称(长度))
方式二:
alter table 表名 add unique index 索引名称(字段名称(长度))
  • 1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行insert、update和delete。
  • 因为更新表时,不仅要保存数据,还要保存一下索引文件。
  • 2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会增长很快。
  • 3.索引只是提高效率的一个因素,如果有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/9923.html

上一篇:WSGI接口

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息