【归纳总结】数据库之索引

什么是索引?

MySQL官方对于索引的定义是:索引使可以帮助高效获取数据的数据结构。即索引是数据结构

数据库在执行查询的时候,如何没有索引存在的情况下,会采用全表扫描的方式进行查找。如果存在索引,则会先去索引列表中定位到特定的行或者直接定位到数据,从而可以极大地减少查询的行数,增加查询速度

可以类比为一部字典开头的目录。


索引是哪种数据结构?

1️⃣二叉树、红黑树?

在这里插入图片描述
优点:二叉树中的每一个元素保存了相应行数据的磁盘地址,通过该磁盘地址,便可以定位到对应行的数据。只需要几次查询即可查到该索引数据。
缺点:但是当数据量比较大,页的数目很多时,二叉树的高度会比较高。IO 的次数会比较多(查询一层需要一次IO)。查找效率低。

2️⃣Hash表?

在这里插入图片描述
优点:把key通过一个=固定的运算转换成一个数字,然后将这个数字对数组的长度取余,最终的结果就当做数组的下标。对应的数据就放在该下标处。如果hash表作为索引,其查询效率也是很高的。
缺点

  1. hash索引仅能够查找=,in 等查找,无法进行范围查找
  2. hash索引无法用来进行排序(经过运算过后的数字大小和原本数字大小没有关系)
  3. 如果设置了若干字段的一个组合索引,那么hash索引无法利用部分字段进行索引查找ÿ
### 数据库知识点总结归纳 数据库作为现代信息系统的核心组件之一,其设计、管理优化涉及众多重要概念技术。以下是关于数据库的一些核心知识点总结: #### 1. 基本操作 - **创建数据库**: 使用 `CREATE DATABASE` 语句可以新建一个数据库[^1]。 - **删除数据库**: 可通过执行 `DROP DATABASE` 删除指定的数据库。例如,命令 `drop database school` 将移除名为 `school` 的数据库。 #### 2. 防止重复插入数据 为了防止在表中插入重复的数据记录,在 MySQL 中可以通过设置唯一约束 (UNIQUE) 或主键 (PRIMARY KEY),或者利用 INSERT IGNORE REPLACE INTO 等语法来处理重复数据的情况[^2]。具体方法如下: ```sql -- 设置唯一索引 ALTER TABLE table_name ADD UNIQUE (column_name); -- 插入忽略重复项 INSERT IGNORE INTO table_name (columns) VALUES (...); ``` #### 3. 关系型与非关系型数据库对比 除了传统的关系型数据库(RDBMS),近年来 NoSQL 数据库也得到了广泛应用。NoSQL 数据库通常采用最终一致性模型来解决分布式环境下的性能可用性问题。这种机制允许不同节点间存在短暂的状态差异,但在一定时间内会趋于同步。 #### 4. 查询优化技巧 提高 SQL 查询效率可以从多个方面入手,比如合理建立索引、减少不必要的列读取以及避免全表扫描等措施。此外,分析查询计划也是诊断瓶颈的有效手段。 --- ### 示例代码片段展示如何向MySQL添加唯一约束以阻止重复条目 ```sql -- 创建测试表格并定义字段属性 CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255), CONSTRAINT uc_email UNIQUE (email) ); -- 测试尝试违反唯一性限制的操作 INSERT INTO users(email) VALUES('test@example.com'); INSERT IGNORE INTO users(email) VALUES('test@example.com'); -- 此次不会报错也不会新增记录 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值