mysql索引.docx
- 文档编号:9969482
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:9
- 大小:1.07MB
mysql索引.docx
《mysql索引.docx》由会员分享,可在线阅读,更多相关《mysql索引.docx(9页珍藏版)》请在冰豆网上搜索。
mysql索引
索引
一、什么是索引
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。
如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。
表里面的记录数量越多,这个操作的代价就越高。
如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。
如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
二、索引分类
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个字符,而不需要全部查询。
5.创建多列索引
实例:
该索引创建好了后,查询字段中必须有name字段才可以使用索引。
6.创建空间索引
实例:
SPATIAL用来设置索引为空间索引;表的存储引擎必须是MyISAM类型。
space字段必须为空间数据类型,而且必须非空。
(3)用ALTERTABLE语句来创建索引
在已经存在的表上,可以通过ALTERTABLE语句直接为表上的一个或多个字段创建索引。
基本形式如下:
ALTERTABLE表名ADD[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名(属性名[(长度)][ASC|DESC])
1.创建普通索引
实例:
2.创建唯一性索引
实例:
3.创建全文索引
实例:
4.创建单列索引
实例:
5.创建多列索引
实例:
6.创建空间索引
实例:
四、删除索引
基本形式:
DROPINDEX索引名ON表名;
实例:
五、索引的不足之处
1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
2.建立索引会占用磁盘空间的索引文件。
一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。
索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql 索引