【本文详细介绍了数据库的基础知识之索引的基本概念和常用操作,欢迎读者朋友们阅读、转发和收藏】,现在小编就来说说关于数据库索引底层解析?下面内容希望能帮助到你,我们来一起看看吧!

数据库索引底层解析(数据库基础之索引)

数据库索引底层解析

【本文详细介绍了数据库的基础知识之索引的基本概念和常用操作,欢迎读者朋友们阅读、转发和收藏!】

1 基本概念1.1 索引的概念

索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。

1.2 索引的优点

1 、通过创建唯一索引,保证数据库表每行数据的唯一性

2 、大大加快数据查询速度

3 、在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间

1.3 索引的缺点

1 、维护索引需要耗费数据库资源

2 、索引需要占用磁盘空间,索引文件可能比数据文件更快达到最大文件尺寸

3 、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响

1.4 索引的操作

创建索引

在执行 CREATE TABLE 语句时可以创建索引,也可以单独用 CREATE INDEX 或 ALTER TABLE 来为表增加索引。

1 . ALTER TABLE

ALTER TABLE 用来创建普通索引、 UNIQUE 索引或 PRIMARY KEY 索引。

ALTER TABLE table_name ADD INDEX index_name (column_list) ALTER TABLE table_name ADD UNIQUE (column_list) ALTER TABLE table_name ADD PRIMARY KEY (column_list)

其中 table_name 是要增加索引的表名, column_list 指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名 index_name 可选,缺省时, MySQL 将根据第一个索引列赋一个名称。另外, ALTER TABLE 允许在单个语句中更改多个表,因此可以在同时创建多个索引。

2 . CREATE INDEX

CREATE INDEX 可对表增加普通索引或 UNIQUE 索引。

CREATE INDEX index_name ON table_name (column_list) CREATE UNIQUE INDEX index_name ON table_name (column_list)

table_name 、 index_name 和 column_list 具有与 ALTER TABLE 语句中相同的含义,索引名不可选。另外不能用 CREATE INDEX 语句创建 PRIMARY KEY 索引。

3 .索引类型

在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为 PRIMARY KEY 或 UNIQUE 索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的组合不重复。

PRIMARY KEY 索引和 UNIQUE 索引非常类似。事实上, PRIMARY KEY 索引仅是一个具有名称 PRIMARY 的 UNIQUE 索引。这表示一个表只能包含一个 PRIMARY KEY ,因为一个表中不可能具有两个同名的索引。

删除索引

可利用 ALTER TABLE 或 DROP INDEX 语句来删除索引。类似于 CREATE INDEX 语句, DROP INDEX 可以在 ALTER TABLE 内部作为一条语句处理,语法如下。

DROP INDEX index_name ON talbe_name ALTER TABLE table_name DROP INDEX index_name ALTER TABLE table_name DROP PRIMARY KEY

其中,前两条语句是等价的,删除掉 table_name 中的索引 index_name 。

第 3 条语句只在删除 PRIMARY KEY 索引时使用,因为一个表只可能有一个 PRIMARY KEY 索引,因此不需要指定索引名。如果没有创建 PRIMARY KEY 索引,但表具有一个或多个 UNIQUE 索引,将删除第一个 UNIQUE 索引。

如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

下面的 SQL 语句对 students 表在 sid 上添加 PRIMARY KEY 索引。

ALTER TABLE students ADD PRIMARY KEY (sid)

,