返回顶部
首页 > 资讯 > 数据库 >MySQL索引具体有哪些功能
  • 723
分享到

MySQL索引具体有哪些功能

2024-04-02 19:04:59 723人浏览 八月长安
摘要

下文给大家带来Mysql索引具体有哪些功能有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完mysql索引具体有哪些功能你一定会有所收获。Mysql索引功能1.

下文给大家带来Mysql索引具体有哪些功能有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完mysql索引具体有哪些功能你一定会有所收获。

Mysql索引功能

1.索引的作用

  • 大大大加快数据的检索速度和增加查询的效率
  • 降低磁盘I/O成本
  • 保证数据记录的唯一性
  • 使得应用于表的SQL语句执行的更快

2.索引简述

  • 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
  • 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程度上弥补这一缺陷,许多 SQL 命令都有一个 DELAY_KEY_WRITE 项。这个选项的作用是暂时制止 MySQL 在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE 选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
  • 从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但 MySQL 把同一个数据表里的索引总数限制为16个。

InnoDB 数据表的索引

  • 在 InnoDB 数据表上,索引对 InnoDB 数据表的重要性要大得多。在 InnoDB 数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级定机制的苊、基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。出于效率方面的考虑,InnoDB 数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。

3.索引的限制

  • 如果 WHERE 子句的查询条件里有不等号(WHERE coloum !=),MySQL 将无法使用索引。类似地,如果 WHERE 子句的查询条件里使用了函数(WHERE DAY(column)=),MySQL 也将无法使用索引。在 JOIN 操作中(需要从多个数据表提取数据时),MySQL 只有在主键和外键的数据类型相同时才能使用索引。
  • 如果 WHERE 子句的查询条件里使用比较操作符 LIKE 和 REGEXP,MySQL 只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是 LIKE 'abc%‘,MySQL 将使用索引;如果查询条件是 LIKE '%abc’,MySQL 将不使用索引。
  • 在 ORDER BY 操作中,MySQL 只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快 ORDER BY 方面也没什么作用)。如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如 “0/1” 或 “Y/N” 等值,就没有必要为它创建一个索引。

4.索引的分类

(1)普通索引
  • 最基本的索引类型,没有唯一性之类的限制。
(2)唯一索引
  • 唯一索引是不允许其中任何两行具有相同索引值的索引。

  • 当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。

  • 对某个列建立UNIQUE索引后,插入新纪录时,数据库管理系统会自动检查新纪录在该列上是否取了重复值,在CREATE TABLE 命令中的UNIQE约束将隐式创建UNIQUE索引。
(3)主键索引
  • 简称为主索引,数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键。

  • 在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。

  • 提示尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键索引。
(4)候选索引
  • 与主索引一样要求字段值的唯一性,并决定了处理记录的顺序。在数据库和自由表中,可以为每个表建立多个候选索引。
(5)复合索引
  • 两个或更多个列上的索引被称作复合索引。 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。 不允许数据记录出现重复值和空值。
(6)全文索引
  • 全文索引是目前实现大数据搜索的关键技术。 能够利用分词技术等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。 用于多个列值,允许数据记录出现重复值和空值

  • MySQL自带的全文索引只能用于数据库引擎为MyISAM的数据表
(7)空间索引
  • 在MySQL 5.7.4实验室版本中, InnoDB存储引擎新增了对于几何数据空间索引的支持。在此之前,InnoDB将几何数据存储为BLOB(二进制大对象)数据,在空间数据上只能创建前缀索引,当涉及空间搜索时非常低效,尤其是在涉及复杂的几何数据时。在大多数情况下,获得结果的唯一方式是扫描表。 新版本MySQL中,InnoDB支持空间索引,通过R树来实现,使得空间搜索变得高效。

5.索引的使用

(1)创建索引
create [unique | fulltext | spatial] index 索引名 on 表名(字段)

详解

unique:唯一索引

fulltext:全文索引,InnoDB不支持FULLTEXT类型的索引

spatial:空间索引

案例

mysql> create index hehe_1 on hehe.user(user_name);     //user表中user_name字段新建普通索引

mysql> create unique index hehe_2 on hehe.user(user_passwd);    //user表中user_passwd字段新建唯一索引

mysql> create index hehe_3 on hehe.user(user_name,user_passwd);

//user表中user_name、user_passwd字段组合为复合索引

(2)查看索引
show index from 数据库名.表名;
(3)删除索引

drop index 索引名 on 数据库名.表名;

对于上文关于MySQL索引具体有哪些功能,大家觉得是自己想要的吗?如果想要了解更多相关,可以继续关注我们的数据库板块。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL索引具体有哪些功能

本文链接: https://lsjlt.com/news/35926.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL索引具体有哪些功能
    下文给大家带来MySQL索引具体有哪些功能有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL索引具体有哪些功能你一定会有所收获。MySQL索引功能1....
    99+
    2024-04-02
  • C#索引功能有哪些
    本篇内容主要讲解“C#索引功能有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#索引功能有哪些”吧!C#索引功能你想过象访问数组那样使用索引访问类吗 ?使用C#索引功能,对它的期待便可了结...
    99+
    2023-06-17
  • Mysql索引、存储引擎有何具体区别
    下文我给大家简单讲讲关于Mysql索引、存储引擎有何具体区别,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完Mysql索引、存储引擎有何具体区别对大家多少有点帮助吧。一、普通索...
    99+
    2024-04-02
  • MySQL索引机制有哪些
    本篇内容主要讲解“MySQL索引机制有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL索引机制有哪些”吧!一、索引是什么MySQL官方对索引的定义为...
    99+
    2024-04-02
  • MySQL索引知识有哪些
    这篇文章主要介绍“MySQL索引知识有哪些”,在日常操作中,相信很多人在MySQL索引知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL索引知识有哪些”的疑惑...
    99+
    2024-04-02
  • MySQL索引有哪些作用
    这篇文章给大家分享的是有关MySQL索引有哪些作用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、索引简介(1)索引的含义和特定 (2)索引的分类 (3)索引的设计原则二、创建...
    99+
    2024-04-02
  • MySQL索引有哪些法则
    这篇文章给大家介绍MySQL索引有哪些法则,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、最佳左前缀法则1. 定义在创建了多列索引的情况下,查询从索引的最左前列开始且不能跳过索引中的...
    99+
    2024-04-02
  • mysql索引类型有哪些
    这篇“mysql索引类型有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql索引...
    99+
    2024-04-02
  • mysql索引有哪些优点
    本文小编为大家详细介绍“mysql索引有哪些优点”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql索引有哪些优点”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
  • mysql索引类型有哪些?
    在Mysql数据库当中,我们经常会谈到Sql语句,当然也会谈到索引优化,那么在数据库当中有哪些索引类型呢,博主在这里进行分享,希望对大家能有所帮助。 目录 1、B-Tree索引: 2、Hash索引: 3、Full-text索引: 4、...
    99+
    2023-09-07
    数据库
  • mysql中的索引有哪些
    mysql中的索引通过在表中创建数据结构来优化数据检索,提高查询性能。主要索引类型有:b-tree索引:平衡树形结构,适合范围查询。hash索引:哈希表存储,快速查找特定值。fullte...
    99+
    2024-04-22
    mysql 地理位置
  • mysql索引方式有哪些
    mysql 数据库中常见的索引方式包括:b 树索引(快速插入、删除、更新和范围查询);哈希索引(快速查找);全文索引(搜索文本数据);空间索引(查询空间数据);组合索引(查询涉及多个列)...
    99+
    2024-08-01
    mysql mysql索引 键值对
  • MySQL索引查询的具体使用
    目录索引的分类聚簇索引非聚簇索引实战理解我们都知道MySQL的辅助索引可以提升检索效率,但是为什么有的时候,走辅助索引反而不如走主键索引的效率高呢?这里我觉得需要先弄懂辅助索引的底层...
    99+
    2023-05-19
    MySQL索引查询 MySQL索引
  • mysql锁和索引之间有何具体的联系
    本篇文章给大家主要讲的是关于mysql锁和索引之间有何具体的联系的内容,感兴趣的话就一起来看看这篇文章吧,相信看完mysql锁和索引之间有何具体的联系对大家多少有点参考价值吧。在平时我们用mysql的锁时,...
    99+
    2024-04-02
  • MySQL索引面试题有哪些
    这篇文章主要介绍“MySQL索引面试题有哪些”,在日常操作中,相信很多人在MySQL索引面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL索引面试题有哪些”...
    99+
    2024-04-02
  • MySQL索引知识点有哪些
    本篇内容主要讲解“MySQL索引知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL索引知识点有哪些”吧! Mysq...
    99+
    2024-04-02
  • mysql的索引技巧有哪些
    本篇内容主要讲解“mysql的索引技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql的索引技巧有哪些”吧!一、MySQL三层逻辑架构MySQL的...
    99+
    2024-04-02
  • MySQL索引的用途有哪些
    这篇文章给大家分享的是有关MySQL索引的用途有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  MySQL 索引的作用是什么一般回答,加速查询,减少磁盘 IO.  索引为什...
    99+
    2024-04-02
  • mysql索引间有哪些区别
    本篇内容介绍了“mysql索引间有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • MySQL中有哪些索引类型
    本篇文章给大家分享的是有关MySQL中有哪些索引类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.B-Tree索引因为存储引擎不⽤进⾏全表扫描来获取数据,直接从索引的根节点...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作