6月9日数据库学习笔记
一、索引的概念和作用
(一)索引的定义
索引是数据库中用于提高数据检索速度的一种数据结构。它类似于书籍的目录,通过建立索引,数据库可以快速定位到表中的特定行,而无需扫描整个表。
(二)索引的作用
提高查询效率:通过索引,数据库可以快速找到满足查询条件的行,减少磁盘 I/O 操作,节省查询时间。
加速排序和分组操作:索引中的数据通常是有序的,可以加快 ORDER BY 和 GROUP BY 操作的执行速度。
支持复杂的查询条件:索引可以加速涉及多个条件、范围查询、模糊查询等复杂查询的执行。
保证数据的唯一性:唯一索引可以确保表中的某列或某几列的值是唯一的,防止数据重复。
二、索引的分类
(一)单列索引
单列索引是在表的一个列上创建的索引,适用于经常作为查询条件的单个列。
sql
CREATE INDEX idx_name ON table_name (column_name);
(二)组合索引
组合索引是在表的多个列上创建的索引,适用于经常同时作为查询条件的多个列。组合索引的列顺序会影响查询性能,应将选择性高的列放在前面。
sql
CREATE INDEX idx_name ON table_name (column1_name, column2_name);
(三)唯一索引
唯一索引用于确保列的值唯一,可以在创建表时或之后添加。
sql
-- 创建表时添加唯一索引
CREATE TABLE table_name (
column1_name datatype UNIQUE,
...
);
-- 之后添加唯一索引
CREATE UNIQUE INDEX idx_name ON table_name (column_name);
(四)全文索引
全文索引用于全文搜索,适用于大文本字段,可以快速查找包含特定单词或短语的行。
sql
-- MySQL 中创建全文索引
CREATE FULLTEXT INDEX idx_content ON table_name (content_column);
(五)聚簇索引和非聚簇索引
聚簇索引:聚簇索引决定了表中数据的物理存储顺序,每个表只能有一个聚簇索引。在 MySQL 的 InnoDB 存储引擎中,主键索引是聚簇索引。
非聚簇索引:非聚簇索引不改变表中数据的物理存储顺序,每个表可以有多个非聚簇索引。
三、索引的创建和管理
(一)创建索引
在创建表时创建索引
sql
CREATE TABLE table_name (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
INDEX idx_name (name) -- 创建单列索引
);
sql
CREATE TABLE table_name (
id INT,
name VARCHAR(100),
age INT,
PRIMARY KEY (id), -- 主键索引
UNIQUE KEY idx_name (name) -- 唯一索引
);
在已存在的表上创建索引
sql
CREATE INDEX idx_age ON table_name (age);
sql
CREATE INDEX idx_name_age ON table_name (name, age);
(二)修改索引
直接修改索引较为复杂,通常通过先删除原索引再创建新索引来实现。
sql
DROP INDEX idx_age ON table_name;
CREATE INDEX idx_age ON table_name (age);
(三)删除索引
sql
DROP INDEX idx_name ON table_name;
浙公网安备 33010602011771号