mysql索引Word文档格式.docx
《mysql索引Word文档格式.docx》由会员分享,可在线阅读,更多相关《mysql索引Word文档格式.docx(9页珍藏版)》请在冰点文库上搜索。
二、索引分类
1.普通索引
2.唯一性索引
3.全文索引
4.单列索引
5.多列索引
6.空间索引
三、索引设计原则
1.选择唯一性索引
2.为经常需要排序、分组和联合操作的字段建立索引
四、创建索引
(1)创建表时创建索引
基本形式:
1.创建普通索引
创建一个名为stu的表,并在表中的id字段建立索引。
实例:
显示创建成功:
注:
一定要保证表名不能重复,否则会创建失败。
使用showcreatetablestu\G查看表的结构:
结果可以看到id字段上已经建立了一个名为“id”的索引。
2.创建唯一性索引
需要使用unique参数进行约束。
创建一个名为index2的表,在表中的id字段上建立名为index2_id的唯一性索引。
使用showcreatetableindex2\G查看表的结构:
3.创建全文索引
全文索引只能创建在CHAR,VARCHAR或TEXT类型的字段上,而且只有在MyISAM存储引擎支持全文索引。
显示创建成功.
使用showcreatetableindex3\G查看表的结构:
4.创建单列索引
单列索引是在表的单个字段上创建索引。
创建一个名为index4的表,在表中的subject字段上创建index4_st的单列索引。
5.创建多列索引
在表的多个字段上创建一个索引。
创建一个名为index5的表,在表中的name和sex字段上建立名为index5_ns的多列索引。
注意:
使用多列索引时,只有使用了索引中的第一个字段时才会触发索引。
结果可以看到,name和sex字段上已经创建了一个名为index5_ns的单列索引。
多列索引中只有查询条件中使用了这些字段中的第一个字段时,索引才会被使用。
6.创建空间索引
创建一个名为index6的表,在表中的space字段上建立名为index6_sp的空间索引。
创建空间索引时必须使用SPATIAL参数来设置。
存储引擎必须是MyISAM类型。
而且索引字段必须有非空约束,且为空间数据类型。
结果可以看到,space字段上建立了一个名为index6_sp的空间索引。
注意,space字段是非空的,而且数据类型是GEOMETRY类型,这个类型是空间数据类型。
空间数据类型包括GEOMETRY,
POINT,LINESTRING和POLYGON类型等。
(2)在已经存在的表上创建索引
在已经存在的表中可以直接为表中的一个或几个字段创建索引。
CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名
ON表名(属性名[(长度)][ASC|DESC]);
此种方式必须保证表是存在的,如果不存在应该先创建表。
在创建索引前可以先使用SHOWCREATETABLE语句查看表的结构,再根据具体情况创建索引。
1.创建普通索引
先使用SHOWCREATETABLE语句查看表的结构实例:
结果显示只有id一个索引,再创建索引:
2.创建唯一性索引
UNIQUE用来设置索引为唯一索引。
3.创建全文索引
FULLTEXT用来设置索引为全文索引。
表的存储引擎必须为MyISAM类型。
name字段必须为CHAR,VARCHAR,TEXT类型。
4.创建单列索引
查询时只需要查询name的前10个字符,而不需要全部查询。
该索引创建好了后,查询字段中必须有name字段才可以使用索引。
SPATIAL用来设置索引为空间索引;
表的存储引擎必须是MyISAM类型。
space字段必须为空间数据类型,而且必须非空。
(3)用ALTERTABLE语句来创建索引
在已经存在的表上,可以通过ALTERTABLE语句直接为表上的一个或多个字段创建索引。
基本形式如下:
ALTERTABLE表名ADD[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名(属性名[(长度)][ASC|DESC])
四、删除索引
DROPINDEX索引名ON表名;
五、索引的不足之处
1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
2.建立索引会占用磁盘空间的索引文件。
一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。
索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。