Coursera 笔记

Module 02 · Using Relational Databases

Overview of Indexes索引概述

Coursera ↗

通过本视频,您将能够描述索引及其用途,解释索引如何提升数据库性能,并掌握使用索引的利弊。


什么是索引?

为了直观理解索引,我们可以想象一个图书馆:

  • 传统方式:若想找一本书,你可能需要逐个书架搜寻,这既耗时又低效。
  • 索引方式:使用图书馆的目录。目录按照书名、作者等信息列出书籍。通过目录,你可以快速定位书籍的具体位置。

数据库索引的工作原理与此类似:

定义:索引是一种数据结构,允许您根据特定标准快速找到表中的特定行。

现实世界的应用案例

  • 在线购物网站:根据搜索条件快速定位产品。
  • 航空公司预订系统:迅速查找符合条件的航班。
  • 银行 ATM 机:快速检索您的账户信息。

索引如何优化数据库性能?

索引是优化数据库性能的核心工具。

1. 避免全表扫描

通常,新数据会被添加到表的末尾,数据本身没有固定的物理顺序。

  • 无索引时:当执行 SELECT 查找某一行时,处理器必须检查每一行直到找到目标。在大型表中,这会极大地拖慢速度。
  • 有索引时:数据库无需扫描整个表,即可快速定位相关行。

2. 优化数据排序

  • 默认情况下,查询结果可能缺乏特定顺序(除非在 SELECT 语句中指定排序)。
  • 如果您经常需要按特定顺序返回数据,索引可以加速这一过程或选择特定的连续数据子集。

索引的工作原理

  1. 指针存储:索引通过存储指向表中每一行的指针来工作。
  2. 定位机制:当您请求特定行时,SQL 处理器利用索引快速定位。这就像使用书末的索引页快速跳转到特定章节。
  3. 唯一键与顺序:唯一键决定了索引值的依赖顺序。

如何创建索引?

  • 自动生成:默认情况下,当您在表上创建主键 (Primary Key) 时,系统会自动为该键生成索引。
  • 手动创建:您可以对经常搜索的列手动创建索引。
    • SQL 语法:使用 CREATE INDEX 语句。
    • 定义要素:需指定索引名称、唯一性(Uniqueness)、目标表及目标列。

索引的优缺点分析

在决定是否创建索引时,需要权衡其带来的收益与成本。

优势 (Advantages)

  • 提升 SELECT 查询性能:为搜索项提供快速路径,比全表检查快得多。
  • 减少数据排序需求:如果经常需要特定顺序的数据,索引可消除检索后重新排序的必要。
  • 保证数据唯一性:如果在创建索引时使用 UNIQUE 子句,可确保更新或插入操作不会导致该列出现重复分录。

劣势 (Disadvantages)

  • 占用磁盘空间:每个索引都会消耗空间,就像书中的索引页会增加书的厚度。
  • 降低写操作性能:执行 INSERT、UPDATE 和 DELETE 时速度会变慢。因为索引表中的行是按序排列的,添加或删除行时需要同步维护索引顺序。

核心总结

  • 索引是优化性能的关键手段,通过存储指针实现快速定位。
  • 黄金准则:仅当从索引获得的优势(查询加速)超过其带来的劣势(空间占用和写性能下降)时,才应创建索引。