首页 理论教育 MySQL数据库应用与实例教程:索引的原理

MySQL数据库应用与实例教程:索引的原理

时间:2023-11-22 理论教育 版权反馈
【摘要】:索引的本质是什么?索引数据需要额外的存储空间吗?索引非常重要,同一个表,表的索引越多越好吗?原则1:表的某个字段值离散度越高,该字段越适合选作索引的关键字。原则6:尽量使用前缀索引。

MySQL数据库应用与实例教程:索引的原理

创建数据库表时,初学者通常仅仅关注该表有哪些字段、字段的数据类型及约束条件等信息,数据库表中另一个重要的概念“索引”很容易被忽视。

1.理解索引

想象一下现代汉语词典的使用方法,理解索引的重要性。

(1)索引的本质是什么?

(2)MySQL数据库中,数据是如何检索的?

(3)一个数据库表只能创建一个索引吗?

(4)什么是前缀索引?

(5)索引可以是字段的组合吗?

(6)能跨表创建索引吗?

(7)索引数据需要额外的存储空间吗?

(8)表中的哪些字段适合选作表的索引?什么是主索引?什么是聚簇索引?

(9)索引与数据结构是什么关系?

(10)索引非常重要,同一个表,表的索引越多越好吗?

2.索引关键字的选取原则

索引的设计往往需要一定的技巧,掌握了这些技巧,可以确保索引能够大幅地提升数据检索效率,弥补索引在数据更新方面带来的缺陷。

原则1:表的某个字段值离散度越高,该字段越适合选作索引的关键字。

原则2:占用储存空间少的字段更适合选作索引的关键字。

原则3:较频繁地作为where查询条件的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

原则4:更新频繁的字段不适合创建索引,不会出现在where子句中的字段不应该创建索引。

原则5:最左前缀原则。

原则6:尽量使用前缀索引。

3.索引与约束

约束主要用于保证业务逻辑操作数据库时数据的完整性;约束是逻辑层面的概念。索引则是将关键字数据以某种数据结构的方式存储到外存,用于提升数据的检索性能;索引既有逻辑上的概念,更是一种物理存储方式,且实际存在、需要耗费一定的储存空间。

4.创建索引

创建索引的方法有两种。

方法一:创建表的同时创建索引,其语法格式如下:

create table 表名((www.xing528.com)

字段名1 数据类型 [约束条件],

[其他约束条件],

[unique | fulltext] index [索引名]( 字段名 [(长度)] [asc | desc] )

)engine=存储引擎类型 default charset=字符集类型

例:

create table book(

isbn char(20)primary key,

name char(100)not null,

brief_introduction text not null,

price decimal(6,2),

publish_time date not null,

unique index isbn_unique(isbn),

index name_index(name(20)),

fulltext index brief_fulltext(name,brief_introduction),

index complex_index(price,publish_time)

)engine=MyISAM default charset=gbk;

方法二:在已有表上创建索引。

语法格式一:

create [unique | fulltext] index 索引名 on 表名(字段名 [(长度)] [asc | desc] )

语法格式二:

alter table 表名 add [unique | fulltext] index 索引名(字段名 [(长度)] [asc | desc] )

5.删除索引

删除索引的语法格式如下:

drop index 索引名 on 表名

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈