返回顶部
首页 > 资讯 > 数据库 >Mysql索引创建删除及使用代价
  • 819
分享到

Mysql索引创建删除及使用代价

2024-04-02 19:04:59 819人浏览 独家记忆
摘要

目录一、Mysql 中索引的创建删除二、索引的代价1. 空间上的代价2. 时间上的代价小结一、mysql 中索引的创建删除 innodb 和 myisam 引擎会自动为主键或者带有

一、mysql 中索引的创建删除

innodb 和 myisam 引擎会自动为主键或者带有 UNIQUE 属性的列建立索引。

如果要为其他列建立索引,就需要显示的指明。

1. 创建表的时候创建索引

CREATE TABLE 表名 (
    各个列的信息...,
    (KEY/INDEX) 索引名 (需要被索引的单个列或多个列)
)

注意,KEY 和 INDEX 任用其一即可,是同义词。

比如在创建 index_demo 表时为c2 和 c3 列添加一个联合索引:

CREATE TABLE index_demo(
    c1 INT,
    c2 INT,
    c3 CHAR(1),
    PRIMARY KEY(c1),
    INDEX idx_c2_c3 (c2, c3)
);

这里创建的索引的名称是idx_c2_c3,虽然索引名字可以任意起,但是建议以idx_为前缀,后面跟着要简历的索引的列名,多个列用下划线隔开。

2. 修改表结构时候添加索引

ALTER TABLE 表名 ADD (KEY/INDEX) 索引名 (需要被索引的单个列或多个列);

3. 修改表结构时候删除索引

ALTER TABLE 表名 DROP (KEY/INDEX) 索引名;

现在删除掉最开始建的索引idx_c2_c3,可以这样写:

ALTER TABLE index_demo DROP INDEX idx_c2_c3;

二、索引的代价

索引虽然是个好东西,但是不能肆意创建。

1. 空间上的代价

这个是很显而易见的。

  • 每建立一个索引,就要为它建立一颗 B+ 树。
  • 而每一颗 B+ 树的每一个节点都是一个数据页,默认会占用16kb的存储空间。
  • 一颗很大的 B+ 树又是由许多数据页组成。

所以,这会占用很大一片存储空间。

2. 时间上的代价

维护顺序的耗时

每当对表中的数据进行增删改操作时,都需要修改各个 B+树 索引。

我们知道:

  • B+ 树中的每层节点都是按照索引列的值从小到大的顺序组成了双向链表
  • 无论是叶子节点还是内节点,内部中的记录都是按照索引列的值的大小顺序,形成了一个单链表。

所以,当进行增删改操作时,可能会对节点和记录的排序造成破坏,那么存储引擎就需要额外的时间进行页面分裂、回收等操作,以维护节点和记录的排序。

如果建立了很多索引,可想而知每个索引对应的B+ 树都要进行相关的维护操作,这要带来多大的消耗。

执行计划分析的耗时

在执行查询语句之前,首先会生成一个执行计划。

一般来说,一条查询语句在执行的过程中最多使用一个二级索引,在生成执行计划时需要计算使用不同索引执行查询时所需的成本,最后选择最低的那个索引进行查询。

如果建立了太多的索引,可能导致在进行成本分析的时候就耗时太多,从而影响查询语句的执行性能。

小结

综上所述,在一个表中建立的索引越多,占用的存储空间就越多,在增删改记录或者生成执行计划时性能也就越差。

所以,该怎样建立又好又少的索引?

本文参考书籍:《mysql是怎样运行的》

更多关于Mysql索引创建删除的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql索引创建删除及使用代价

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

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

猜你喜欢
  • Mysql索引创建删除及使用代价
    目录一、Mysql 中索引的创建删除二、索引的代价1. 空间上的代价2. 时间上的代价小结一、Mysql 中索引的创建删除 innodb 和 myisam 引擎会自动为主键或者带有 ...
    99+
    2024-04-02
  • Mysql索引创建删除及使用的代价是什么
    本篇内容介绍了“Mysql索引创建删除及使用的代价是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Mysql 中索引的创建删除inn...
    99+
    2023-06-30
  • MySQL之表的创建、删除、修改、删除、查看及索引
    创建数据库create database|schema [if not exists] db_name [character set= ] [collate= ]注:schema可以理解为方案或者数据库,与...
    99+
    2024-04-02
  • mysql索引的创建和和删除
    索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。删除索引可以利用ALTER TABLE或DROP INDEX语句来实现。(1...
    99+
    2024-04-02
  • MySQL索引怎么创建和删除
    这篇文章主要介绍了MySQL索引怎么创建和删除的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL索引怎么创建和删除文章都会有所收获,下面我们一起来看看吧。MySQL Index索引是一种数据结构,可以是B...
    99+
    2023-07-05
  • MySQL创建和删除索引的步骤
    本文主要给大家简单讲讲MySQL创建和删除索引的步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL创建和删除索引的步骤这篇文章可以给大家带来一些实...
    99+
    2024-04-02
  • MySQL中怎么创建和删除索引
    MySQL中怎么创建和删除索引,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.索引作用   在索引列上,除了上面提到...
    99+
    2024-04-02
  • MySQL该如何实现查看与创建以及删除索引
    下面一起来了解下MySQL该如何实现查看与创建以及删除索引,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL该如何实现查看与创建以及删除索引这篇短内容是你想要的。    &nb...
    99+
    2024-04-02
  • 生成 MySQL 删除索引、创建索引、分析表的 SQL 语句
    目录 1. 生成删除索引的 SQL 语句 2. 生成创建索引的 SQL 语句 3. 生成分析表的 SQL 语句 1. 生成删除索引的 SQL 语句 mysql -uwxy -p12345 -S /data/18253/mysqldata...
    99+
    2023-09-18
    mysql
  • mysql视图创建、使用及删除方法
    本文主要给大家简单讲讲mysql视图创建、使用及删除方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql视图创建、使用及删除方法这篇文章可以给大家带...
    99+
    2024-04-02
  • 如何在MySQL中创建、删除和查询索引
    如何在MySQL中创建、删除和查询索引?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。熟悉使用MySQL命令可以方便灵活地执行各种数据库操作...
    99+
    2024-04-02
  • MySQL索引如何创建和使用索引
    创建MySQL索引可以通过以下两种方式: 使用CREATE INDEX语句创建索引: CREATE INDEX index_na...
    99+
    2024-03-06
    MySQL
  • 【Mongo】MongoDB索引管理-索引的创建、查看、删除
    http://itbilu.com/database/mongo/E1tWQz4_e.html 索引是提高查询查询效率最有效的手段。索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的...
    99+
    2024-04-02
  • 创建、修改、删除mysql表、视图、索引的方法
    下面讲讲关于创建、修改、删除mysql表、视图、索引的方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完创建、修改、删除mysql表、视图、索引的方法这篇文章你一定会有所受益。...
    99+
    2024-04-02
  • MySQL索引的创建与使用
    索引的分类   在学习如何创建索引之前,先了解一下索引的分类   MySQL中分为:普通索引,唯一索引,主键索引,组合索引,和全文索引。 index_name :索引名 table:表名 colu...
    99+
    2023-10-18
    mysql 数据库 java
  • mysql索引怎么创建和使用
    MySQL索引是用于加快查询速度的一种数据结构,可以提高查询效率。下面是创建和使用MySQL索引的步骤:1. 创建索引: &nbs...
    99+
    2024-02-29
    mysql
  • db2数据库创建索引,删除索引,查看表索引,SQL语句执行计划以及优化建议
    db2数据库创建索引,删除索引,查看表索引,SQL语句执行计划以及优化建议   建立表索引     create index 索引名 on 表名(列名,列名); 删除表索引     dro&#...
    99+
    2018-09-15
    db2数据库创建索引,删除索引,查看表索引,SQL语句执行计划以及优化建议
  • 创建和利用MySQL索引
    MySQL索引的创建和使用 MySQL是一种常用的关系型数据库管理系统,用于存储和管理数据。在处理大量数据时,索引是提高查询性能的关键。本文将介绍MySQL索引的创建和使用方法,并提供...
    99+
    2024-02-22
    使用 (use) mysql索引
  • mysql索引创建和使用细节(一)
    最近困扰自己很久的膝盖积液手术终于做完,在家养伤,逛技术博客看到easyswoole开发组成员仙士可博客有关mysql索引方面的知识,自己打算重温下。 正常业务起步数据表数据量较少,不用考虑使用索引,当后期累积的数据数量非常可观时...
    99+
    2016-01-16
    mysql索引创建和使用细节(一)
  • 1Z0-051-DDL-2简单索引的创建和删除
    索引具有两个功能:一是强制实施主键约束和唯一约束,二是提高性能但是会减低DML操作性的性能。 1.1 索引的必要性       一、索引...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作