文档详情

第七章视图和触发器77课件.pptx

发布:2025-04-29约4.14千字共29页下载文档
文本预览下载声明

;学习目标;

表的索引就如同书的目录一样,通过索引可以大大提高查询速度,改善数据库的性能。其具体表现如下:

(1)通过创建唯一性索引,可以保证数据记录的唯一性。

(2)可以大大加快数据的检索速度。

(3)可以加快表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。

(4)在使用ORDEYBY和GROUPBY子句进行数据检索时,可以显著减少查询中分组和排序的时间。

(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。

;

索引带来的查找速度的提高也是有代价的,因为索引要占用存储空间,而且为了维护索引的有效性,向表中插入数据或者更新数据时,数据库还要执行额外的操作来维护索引。所以,过多的索引不一定能提高数据库的性能,必须科学地设计索引,才能提高数据库的性能。

;

1.普通索引

普通索引是由KEY或INDEX定义的索引,它是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。该类型索引可以创建在任何数据类型中。

2.唯一索引

唯一索引是由UNIQUE定义的索引,指索引列的值必须唯一,但允许有空值。如果是在多个列上建立的组合索引,则列值的组合值必须唯一。

;

3.全文索引

全文索引是由FULLTEXT定义的索引,是指在定义索引的列上支持值的全文查找。它只能创建在CHAR、VARCHAR或TEXT类型的字段上。

4.空间索引

空间索引是由SPATIAL定义的索引,是只能在空间数据类型(GEOMETRY、POINT、LINESTRING和POLYGON。)的列上建立的索引。

需要注意的是,创建空间索引的字段,必须将其声明为NOTNULL。

;

5.单列索引

单列索引指的是在表中单个字段上创建索引,它可以是普通索引、唯一索引或者全文索引,只要保证该索引只对应表中的一个字段即可。

6.多列索引

多列索引指的是在表中多个字段上创建的索引。只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。

;

索引并非越多越好

避免对经常更新的表建立过多的索引

数据量小的表最好不要使用索引

在不同???少的列上不要建立索引

为经常需要排序、分组和联接操作的字段建立索引

;用的CREATETABLE命令创建表的时候就创建索引。其语法格式如下:

CREATETABLE表名

(字段名数据类型[完整性约束条件],

字段名数据类型[完整性约束条件],

...

字段名数据类型,

UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY[别名](字段名[(长度)])[ASC|DESC]);

参数说明:

UNIQUE:该选项表示创建唯一索引,在索引列中不能有相同的列值存在。

FULLTEXT:该选项表示创建全文索引。

SPATIAL:该选项表示创建空间索引。

别名:该选项表示创建索引的名称。不加此选项,则默认用创建索引的字段名为该索引名称。

长度:该选项指定字段中用于创建索引的长度。不加此选项,则默认用整个字段内容创建索引。

ASC|DESC:该选项表示创建索引时的排序方式。其中ASC为升序排列,DESC为降序排列。默认为升序排列。

;创建teacher_1表,同时在表的tname字段上建立普通索引。;使用SHOWCREATETABLE语句查看表的结构。

可以看出,tname字段上已经创建了一个名为tname的索引。

;为了查看索引是否被使用,可以使用EXPLAIN语句进行查看。

EXPLAINSELECT*FROMteacher_1WHEREtname=马艳红\G

从显示结果可以看出,possible_keys和key的值都为tname,说明tname索引已经存在并且已经开始被使用了。

;创建course_1表,同时表中的cname字段创建名为UK_cname的

唯一索引,并且按照升序排列。;创建course_2表,同时对course_2表中的brief字段创建名为FT_brief的全文索引。;SQL语句如下:

CREATETABLEe_0

(spaceGEOMETRYNOTNULL,

SPATIALINDEXsp(space)

)ENGINE=MyISAM;

需要注意的是,创建空间索引的字段的值不能为空。;对应的SQL语句如下:

CREATETABLEcourse_3

(cnoC

显示全部
相似文档