IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 银行面试之MySQL数据库(一) -> 正文阅读

[数据结构与算法]银行面试之MySQL数据库(一)

前言

这篇博客主要是介绍自己在准备银行面试时的MySQL数据库知识

索引

索引的定义

索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据表中数据。

更通俗的说,索引就相当于目录,可以加快检索速度,提高系统性能。索引也是一个文件,需要占用物理空间,此外索引也需要维护。
最常见的就是使用哈希表B+树作为索引。

索引的创建

  1. 建表时创建

    create table table_name(
    	.....
    	....
    	....
    	index index_name(column(length))
    )
    
  2. 直接创建

    create index index_name on table_name (column(length));
    
  3. 修改表结构添加索引

    alter create index index_name on table_name (column(length));
    

索引的底层实现

Hash索引

哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,数据库引擎会对所有的索引列计算一个hash code,并且会将所有的hash code存储在索引中,同时在索引表中保存指向每个数据行的指针。

B+树索引

B+树
  • 规则
    (1)B+树的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加;
    (2)B+树叶子节点保存了父节点的所有关键字记录的指针,所有数据地址必须要到叶子节点才能获取到。所以每次数据查询的次数都一样,查询速度稳定高;
    (3)B+树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针,从而构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。

B+树

Hash索引 Vs B+树索引

(待补充)

常见索引

  • 唯一索引:Unique,索引列的值必须唯一,允许有空值
  • 主键索引:Primary Key,利用主键建立的索引,特殊的唯一索引,不允许有空值
  • 全文索引:FullText,MyISAM和InnoDB支持,允许有重复值和空值,可以在char、varchar、text类型的列上创建。主要用来查找文本中的关键字,而不是直接与索引中的值比较,它更像是一个搜索引擎,全文索引需要配合match against操作使用,而不是一般的where语句加like。
  • 组合索引多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用

最左前缀原则

mysql 建立多列索引(联合索引)有最左前缀的原则,即最左优先,如:

  • 如果有一个 2 列的索引 (col1, col2),则已经对 (col1)、(col1, col2) 上建立了索引;
  • 如果有一个 3 列索引 (col1, col2, col3),则已经对 (col1)、(col1, col2)、(col1, col2, col3) 上建立了索引;

mysql会一直向右匹配直到遇到范围查询

聚集索引 VS 非聚集索引

聚集索引是指索引和数据的顺序一致的索引,一个表中只能有一个聚集索引,一般为主键索引。
按照此定义,除此之外的索引都是非聚集索引,并且一个表中可以有多个非聚集索引
在InnoDB中B+树索引的叶子结点存储了整行数据的主键索引,

索引失效

  1. 使用!= 或者<>
  2. 复合索引未使用左列字段
  3. like以%开头
  4. where中索引列有运算或函数
  5. 条件中有 or
  6. 索引列的数据类型存在隐式转换
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:36:29  更:2021-10-28 12:38:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:39:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码