iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql索引创建删除及使用的代价是什么
  • 836
分享到

Mysql索引创建删除及使用的代价是什么

2023-06-30 17:06:04 836人浏览 薄情痞子
摘要

本篇内容介绍了“Mysql索引创建删除及使用的代价是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Mysql 中索引的创建删除inn

本篇内容介绍了“Mysql索引创建删除及使用的代价是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    一、Mysql 中索引的创建删除

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

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

    创建表的时候创建索引

    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_为前缀,后面跟着要简历的索引的列名,多个列用下划线隔开。

    修改表结构时候添加索引

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

    修改表结构时候删除索引

    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索引创建删除及使用的代价是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    您可能感兴趣的文档:

    --结束END--

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

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

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

    本篇文章演示代码以及资料文档资料下载

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

    下载Word文档
    猜你喜欢
    • Mysql索引创建删除及使用的代价是什么
      本篇内容介绍了“Mysql索引创建删除及使用的代价是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Mysql 中索引的创建删除inn...
      99+
      2023-06-30
    • Mysql索引创建删除及使用代价
      目录一、Mysql 中索引的创建删除二、索引的代价1. 空间上的代价2. 时间上的代价小结一、Mysql 中索引的创建删除 innodb 和 myisam 引擎会自动为主键或者带有 ...
      99+
      2024-04-02
    • MySQL索引怎么创建和删除
      这篇文章主要介绍了MySQL索引怎么创建和删除的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL索引怎么创建和删除文章都会有所收获,下面我们一起来看看吧。MySQL Index索引是一种数据结构,可以是B...
      99+
      2023-07-05
    • MySQL中怎么创建和删除索引
      MySQL中怎么创建和删除索引,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.索引作用   在索引列上,除了上面提到...
      99+
      2024-04-02
    • mysql删除索引的方法是什么
      要删除 MySQL 数据库中的索引,可以使用以下 SQL 命令: DROP INDEX index_name ON table_na...
      99+
      2024-04-09
      mysql
    • mysql索引创建和使用的方法是什么
      MySQL索引的创建和使用方法如下: 创建索引:可以在创建表时指定索引,也可以在表已经创建后创建索引。创建索引的语法如下: 在创...
      99+
      2024-04-09
      mysql
    • 生成 MySQL 删除索引、创建索引、分析表的 SQL 语句
      目录 1. 生成删除索引的 SQL 语句 2. 生成创建索引的 SQL 语句 3. 生成分析表的 SQL 语句 1. 生成删除索引的 SQL 语句 mysql -uwxy -p12345 -S /data/18253/mysqldata...
      99+
      2023-09-18
      mysql
    • MySQL索引创建原则是什么
      本篇内容介绍了“MySQL索引创建原则是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2023-05-25
      mysql
    • MySQL索引的创建与使用
      索引的分类   在学习如何创建索引之前,先了解一下索引的分类   MySQL中分为:普通索引,唯一索引,主键索引,组合索引,和全文索引。 index_name :索引名 table:表名 colu...
      99+
      2023-10-18
      mysql 数据库 java
    • mysql索引怎么创建和使用
      MySQL索引是用于加快查询速度的一种数据结构,可以提高查询效率。下面是创建和使用MySQL索引的步骤:1. 创建索引: &nbs...
      99+
      2024-02-29
      mysql
    • mysql创建联合索引的方法是什么
      在 MySQL 中创建联合索引的方法是使用 CREATE INDEX 语句。 语法如下: CREATE INDEX index_na...
      99+
      2024-04-09
      mysql
    • mongodb删除索引的方法是什么
      在MongoDB中,可以使用db.collection.dropIndex()方法来删除索引。通过指定索引的名称或键名,即可删除该索...
      99+
      2024-03-08
      mongodb
    • sqlserver删除索引的方法是什么
      要删除 SQL Server 中的索引,可以使用 DROP INDEX 语句。语法如下: DROP INDEX index_name...
      99+
      2024-04-09
      sqlserver
    • pgsql删除索引的方法是什么
      非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
      99+
      2024-05-14
    • sql删除索引的方法是什么
      要删除一个索引,可以使用SQL中的DROP INDEX语句。例如,要删除名为idx_firstname的索引,可以执行以下命令: D...
      99+
      2024-03-11
      sql
    • MySQL怎么删除创建的用户
      要在MySQL中删除创建的用户,可以使用以下步骤:1. 使用root用户登录MySQL服务器。2. 执行以下命令来删除用户:DRO&...
      99+
      2023-10-18
      MySQL
    • sql创建索引的步骤是什么
      创建索引的步骤如下: 选择需要创建索引的表:确定需要在哪个表上创建索引。 选择需要创建索引的列:确定需要在哪些列上创建索引。...
      99+
      2024-04-09
      sql
    • oracle索引创建的方法是什么
      在Oracle数据库中,可以使用以下几种方法来创建索引:1. CREATE INDEX语句:使用CREATE INDEX语句可以手动...
      99+
      2023-08-28
      oracle
    • oracle索引创建的原则是什么
      创建索引的原则是根据查询的频率、数据的选择性和查询性能来决定。以下是创建索引的一些原则: 频繁使用的查询应该创建索引:如果某个查...
      99+
      2024-04-09
      oracle
    • postgresql索引创建的方法是什么
      在PostgreSQL中,可以使用以下方法来创建索引: 创建唯一索引: CREATE UNIQUE INDEX index_na...
      99+
      2024-04-09
      postgresql
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作