博客
关于我
MySQL~教你满分回答什么是数据库索引? 索引的数据结构是什么? 什么是事务?
阅读量:336 次
发布时间:2019-03-04

本文共 995 字,大约阅读时间需要 3 分钟。

什么是数据库索引?

概念

索引是一种特殊的文件,包含对数据库表中所有记录的引用指针。它可以对表中的一列或多列创建索引,并指定索引的类型。不同类型的索引有不同的数据结构实现。

作用

  • 索引在数据库中起到类似书籍目录的作用,可用于快速定位和检索数据。
  • 没有索引时,数据库查询需要遍历整个表,效率极低。
  • 索引显著提高数据库的查询效率,尤其是插入、修改和删除操作的效率也有所下降。
  • 索引的本质作用是避免数据库进行顺序查找,提升查找效率。

使用场景

  • 当对数据库表的某列或某几列进行频繁的条件查询时。
  • 当该表的插入、修改操作频率较低时。
  • 当索引不会占用过多的磁盘空间时。

满足以上条件时,建议对这些字段创建索引,以提高查询效率。反之,如果对这些列进行非条件查询,或者经常执行插入、修改操作,或者磁盘空间不足时,则不建议创建索引。

如何使用

  • 创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)时,会自动创建对应列的索引。
  • 手动创建索引时,可对非主键、非唯一约束、非外键的字段创建普通索引。
  • 索引的删除需谨慎操作,主键、唯一约束和外键索引不可删除。

数据结构

  • 索引的数据结构不是简单的二叉搜索树或哈希表。
  • B-树与二叉树的主要区别在于:
    • B-树的每个节点可以存储多个数据。
    • B-树的每个节点存储的数据个数与其度有关(度 = 存储数据个数 + 1)。
    • B-树的高度较低,查找效率比二叉树高。
  • B+树是实际应用中的索引结构,其特点是:
    • 数据仅存在于叶子节点。
    • 非叶子节点仅存储边界信息。
    • 查询时,平均访问磁盘的次数较少。
    • 变化操作需同步调整索引,影响性能。

查看SQL执行

  • 使用EXPLAIN命令可分析SQL执行过程,观察是否使用索引。
  • keyNULL表示未使用索引,否则显示使用了哪个索引。

什么是事务?

概念

事务是逻辑上的一组操作,组成的各个单元要么全部成功,要么全部失败。数据库事务具有原子性、一致性、持久性和隔离性。

使用方法

  • 开启事务:START TRANSACTION
  • 执行多条SQL语句
  • 提交或回滚:COMMITROLLBACK

特点

  • 原子性:所有操作要么全部成功,要么全部失败。
  • 一致性:事务执行前后,数据库始终处于合法状态。
  • 持久性:事务完成后,修改已持久生效。
  • 隔离性:确保不同事务之间的操作隔离。

通过实际操作可以看到事务的强大功能。

转载地址:http://dnee.baihongyu.com/

你可能感兴趣的文章
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
C++小笔记——function绑定重载函数、私有继承用的条件
查看>>
最近一些算法题的总结
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
2021-5-2【指针】【作业】【指针代替下标进行数组编程】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
MPU9250九轴姿态解算开发小结
查看>>
pycharm+python+MS SQLSERVER 实战2、实现爬虫程序。
查看>>
判断字符是否出现
查看>>
C 语言restrict 关键字的使用浅谈
查看>>
深入理解数组指针与指针数组的区别
查看>>
iOS客户端与PHP服务端的简单交互
查看>>
图像Exif Orientation
查看>>
Python的异常处理
查看>>
Kubernetes(k8s)的调度器详细介绍
查看>>
Linux的网络参数设置
查看>>
权限修饰符protected和default的区别
查看>>
紫书——蛇形填数
查看>>
吐泡泡(栈)
查看>>
刷题计划1——poj1753
查看>>