返回顶部
首页 > 资讯 > 数据库 >一文快速入门 MySQL 索引
  • 464
分享到

一文快速入门 MySQL 索引

一文快速入门MySQL索引 2015-09-22 18:09:17 464人浏览 才女
摘要

什么是索引 Mysql 官方对索引的定义:索引(Index)是帮助 mysql高效获取数据的数据结构。因此 索引的本质就是数据结构。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。 可简单理解为 排好序的快速查找数据

一文快速入门 MySQL 索引

什么是索引

Mysql 官方对索引的定义:索引(Index)是帮助 mysql高效获取数据的数据结构。因此 索引的本质就是数据结构。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。

可简单理解为 排好序的快速查找数据结构。在数据之外,数据库系统还维护着 满足特定算法查询的数据结构,这些数据结构以某种方式指向数据。这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

一般来说,索引比较大,不可能全部存储在内存中,因此索引往往以 索引文件 的形式存储在磁盘上。

平常所说的索引,如果没有特别指明,都是 B 树索引。其中聚集索引、次要索引、覆盖索引、前缀索引、唯一索引默认都是用 B 树。

可以通过命令 show index from table_name 查看表的索引情况

索引的优缺点

优点

  • 类似于大学图书馆的书目索引,提高数据的检索效率,降低数据库io 成本
  • 通过索引列对数据进行排序,降低数据的排序成本,从而降低 CPU 的消耗

缺点

  • 索引实际上也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间
  • 虽然索引大大提高了查询效率,但是降低了更新表的速度,如 insert、update 和 delete 操作。因为更新表时,Mysql 不仅要保存数据,还要保存索引文件每次更新的索引列字段,并且在更新操作后,会更新相应字段索引的信息
  • 索引只是提高查询效率的一个因素,如果你的 MySQL 有大量的数据表,就需要花时间研究建立最优秀的索引或优化查询语句

索引分类

索引主要分为以下三类:

  • 单值索引:一个索引只包含单个列,一个表可以有多个单值索引
  • 唯一索引:索引列的值必须唯一,但允许有空值,主键就是唯一索引
  • 复合索引:一个索引包含多个列

以索引的结构划分为以下四类:

  • BTREE 索引
  • Hash 索引
  • Full-Text 索引
  • R-Text 索引

基本语法使用

创建索引

创建一个普通索引

CREATE INDEX index_name ON table_name (column_name(length))

也可以通过修改表结构的方式来添加索引

ALTER TABLE table_name ADD INDEX index_name (column_name(length))

注:如果是 char、varchar 类型的字段,length 可以小于字段实际长度;如果是blob、text 类型,必须指定 length

其它创建索引的方式

添加主键索引

ALTER TABLE table_name ADD PRIMARY KEY (column_name)

添加唯一索引

ALTER TABLE table_name ADD UNIQUE (column_name)

添加全文索引

ALTER TABLE table_name ADD FULLTEXT (column_name)

添加普通索引

ALTER TABLE table_name ADD INDEX index_name (column_name)

添加组合索引

ALTER TABLE table_name ADD INDEX index_name (column_name_1, column_name_2, column_name_3)

删除索引

DROP INDEX index_name ON table_name

查看索引

SHOW INDEX FROM table_name

需要建立索引的情况

  • 主键自动建立唯一索引
  • 频繁作为 查询条件 的字段
  • 查询中与其它表关联的字段:外键关系建立索引
  • 高并发 下趋向创建 组合索引
  • 查询中 排序 的字段。排序字段若通过索引去访问将大大提高排序速度
  • 查询中 分组 字段

不需要建立索引的情况

  • 表记录太少(数据量太少 MySQL 自己就可以搞定了)

  • 经常增删改的表

  • 数据重复且平均分配的字段,如国籍、性别等

  • 频繁更新的字段不适合建立索引

  • Where 条件里面用不到的字段同样不适合建立索引

  • 文章作者:彭超

  • 本文首发于个人博客:https://antoNIOpeng.com/2019/05/15/mysql/%E4%B8%80%E6%96%87%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8MySQL%E7%B4%A2%E5%BC%95/

  • 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 彭超 | Blog!

您可能感兴趣的文档:

--结束END--

本文标题: 一文快速入门 MySQL 索引

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

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

猜你喜欢
  • 一文快速入门 MySQL 索引
    什么是索引 MySQL 官方对索引的定义:索引(Index)是帮助 MySQL高效获取数据的数据结构。因此 索引的本质就是数据结构。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。 可简单理解为 排好序的快速查找数据...
    99+
    2015-09-22
    一文快速入门 MySQL 索引
  • 快速入门MySQL数据库索引的基础知识
    本文主要给大家介绍快速入门MySQL数据库索引的基础知识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下快速入门MySQL数据库索引的基础知识吧。--...
    99+
    2024-04-02
  • mongoDB数据库索引快速入门指南
    目录MongoDB 索引1. 开始与准备数据2. 创建索引前3. 创建索引 createIndex4. 创建索引后6.唯一索引与符合索引①唯一索引②复合索引MongoDB 索引 索引...
    99+
    2024-04-02
  • Java 索引函数 API:如何快速入门?
    在 Java 开发中,索引函数 API 是一个非常重要的概念。它可以帮助我们快速地查找和操作数据,是 Java 语言中一个非常强大的特性。在本文中,我们将详细介绍 Java 索引函数 API 的相关知识,以及如何快速入门。 一、什么是索引...
    99+
    2023-09-02
    索引 函数 api
  • 【Mysql】快速定位不合理的索引——MySQL索引调优(一)
    原文地址:http://mp.weixin.qq.com/s__biz=MjM5MjIxNDA4NA==&mid=401131835&idx=1&sn=37c5fd9d3d8670f...
    99+
    2024-04-02
  • 快速了解MySQL 索引
    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。...
    99+
    2022-05-16
    MySQL 索引
  • Python3快速入门(一)——Pyth
    一、Python简介 1、Python简介 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,由荷兰Guido van Rossum于1989年底发明,第一个公开发行版于1991年发布,Python源代码遵循 GPL(G...
    99+
    2023-01-31
    入门 快速 Pyth
  • Python3快速入门(十一)——Pyt
    一、mysql-connector 驱动 1、mysql-connector 简介 mysql-connector 是 MySQL 官方提供的驱动器。使用pipenv进行包管理,安装命令如下:pipenv install mysql-co...
    99+
    2023-01-31
    入门 快速 Pyt
  • MySQL Workbench如何快速引入sql文件
    概述:肯定有很多同学刚接触数据库时不懂如何将拿到的sql文件导入数据库,因此在这里介绍一个使用MySQL Workbench导入sql文件的方法还有一些注意事项。 一、打开MySQL Workbench 首先安装完mysql全家桶后,打开开...
    99+
    2023-08-24
    sql
  • JDBC快速入门
    JDBC快速入门   详解 1.0DriverManager 功能1       功能2 2.0 connection对象   3.0 statement对象     4.0 ResultSet 遍历结果集的一个案例 ...
    99+
    2020-11-18
    JDBC快速入门
  • ClickHouse 快速入门
            ClickHouse 是什么ClickHouse 是一个开源的面向联机分析处理(OLAP, On-L...
    99+
    2024-04-02
  • mysqlsla快速入门
    1、什么是mysqlsla? 简单的说就是分析mysql log的工具,我主要是用他来分析下mysql slow log。 2、下载 http://hackmysql.com/mysqlsl...
    99+
    2024-04-02
  • python 快速入门
         导入 #from dir1 import test #import dir1.test as test 列表推到: b3 =[x for x in xing if x in ming] print(b3)  li ...
    99+
    2023-01-31
    入门 快速 python
  • Python3快速入门
    Python3快速入门Python3快速入门(一)——Python简介https://blog.51cto.com/9291927/2385592Python3快速入门(二)——Python3基础https://blog.51cto.com...
    99+
    2023-01-31
    入门 快速
  • SpringBoot快速入门
    文章目录 1,SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 `Controller`1.1.1.3 启动服务器...
    99+
    2023-10-27
    spring boot spring java
  • JavaScript快速入门
    目录 1.概述 2.引入方式 3.调试 4.基础语法 4.1.变量 4.2.常量 4.3.运算符 ​编辑 4.4.流程控制 4.4.1.顺序 4.4.2.判断 4.4.3.循环 4.5.对象 4.6.数组 4.7.函数 5.高级特性 1...
    99+
    2023-10-28
    javascript 前端 开发语言 原力计划
  • vue3 文档梳理快速入门
    目录一、setup1. setup 函数中的第一个参数 —— props2.  contextcontext二、setup 函数的返回值1.setup 函数的返回值 —— ...
    99+
    2024-04-02
  • MySQL从入门到快速上手
    文章目录 第一章 了解SQL第二章 检索数据第三章 排序第四章 过滤数据第五章 高级数据过滤第六章 多表查询内连接(交集)外连接多表连接UNIONUNION ALL 第七章...
    99+
    2023-09-01
    mysql 数据库 java
  • MySQL之索引(入门级讲解)
    目录 一.索引的概念   1.1索引的简介  1.2.索引的优缺点 二.MySQL索引语法 2.1查看索引 2.2创建索引 2.2.1 创建表时创建索引  2.2.2存在的表上创建索引 2.3删除索引 三.索引的数据结构       3.1...
    99+
    2023-08-31
    mysql 数据库
  • Java教程和Django索引:如何在短时间内快速入门?
    Java和Django都是非常流行的编程语言和框架。Java是一种面向对象的编程语言,它可以在不同的操作系统和设备上运行,是一种非常强大的编程语言。Django是一个基于Python的Web框架,它可以帮助开发者快速地搭建Web应用程序。...
    99+
    2023-07-22
    教程 django 索引
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作