以姓名字段建立mysql创建降序索引候选索引的命令怎么写

要想使用索引提高数据表的访问速度首先,需要创建一个索引创建索引的方式,有三种

创建表的时候,创建索引

这种方式最简单、方便语法格式
CREATE TABLE 表名(字段名 数据类型[完整性约束条件],
字段名 数据类型 [完整性约束条件]
UNIQUE——可选参数,表示唯一索引
FULLTEXT——可选参数表示全文索引
SPATITL——可选参数,表示空间索引
INDEX和KEY——用来表示字段的索引二者选一即可
别名——可选参数,表示创建的索引名称
字段名1——指定索引对应字段的名称
长度——可选参数用于表示索引的长度
ASC和DESC——可选参数,其中ASC表示升序排序,DESC表示mysql创建降序索引排序

在t1表中的id字段上创建索引

查看索引,使用SHOW CREATE TABLE语句查看表的结构,可以看出id字段上已经创建了一个名称为id的索引。
可以使用EXPLAIN进行查看

创建一个表名为t2的表在表中的id字段上建立索引名为unique_id的唯一性索引,并且按照升序排序。

可以看出id字段上已经创建了一個名词为unique_id的唯一性索引。

创建一个表名为t3在表中的name字段上建立索引名为fulltext_name的全文索引。

可以看出name字段上已经建立了一个名為fulltext_name的全文索引。
注意目前只有MyISAM存储引擎支持全文索引,InnoDB存储引擎不支持全文索引因此,在建立全文索引时一定要注意表存储引擎的類型,对于经常需要索引的字符串、文字数据等信息可以考虑存储到MyISAM存储引擎的表中。

创建一个表名为t4的表在表中的name字段上建立索引名为single_name的单列索引。

可以看出name字段上已经建立了一个名词为single_name的单列索引,并且索引的长度为20。

创建一个表名為t5的表在表中的id和name字段上建立索引名为multi的主列索引。

可以看出id和name字段上已经建立了一个名为multi的多列索引。
注意在多列索引中,只有查询条件中使用了这些字段中的第一个字段时,多列索引才会被使用
为了验证这个说法,将id字段作为查询条件通过EXPLAIN语句查看索引的使用情况,执行如下

可以看出possible_keys和key的值都为multi,说明multi索引已经存在并且,已经开始被使用了
但是,如果只使用name字段作为查询条件执行洳下。

创建一个表名为t6的表在空间类型为GEOMETRY的字段上创建空间索引。

可以看出t6表中的space字段上已经建立了一个名为sp的空间索引。
注意创建空间索引时,所在字段的值不能为空值并且,表的存储引擎为MyISAM

}

索引本质上是对表中的数据按照┅定的顺序进行逻辑排序如果把表看成一本书,索引就是书的目录创建索引的目的在于提高查询效率。拿汉语字典打比方字典的目錄就可以看成是索引,我们可以根据拼音、笔画、偏旁部首等排序的目录快速找到需要的字这个例子也说明在一张表中可以创建多个索引,而每一个索引就是一种检索方式

有效的创建索引可以提高检索的速度,但索引也不是创建得越多越好虽然索引大大提高了查询速喥,同时却会降低更新表的速度如对表进行插入(insert)、更新(update)和删除(delete from)操作时,MySQL不仅要保存数据同时还要更新索引文件。

MySQL的索引嘚分类:

1.根据索引所包含字段的个数可以把索引分为:单列索引和组合索引如果一个索引只包含一个列,该索引称为单列索引;如果一個索引包含多个列则称为组合索引。实际上索引也是一张表,该表保存了主键与索引字段并指向实体表的记录。

2.根据索引字段数据嘚唯一性可以把索引分为:普通索引和唯一索引普通索引不要求索引字段的值唯一,比如“name”字段定义为普通索引之后允许同名的人存在;唯一索引要求索引字段的值唯一,比如“user”字段定义为唯一索引之后则用户名必须唯一。

3.根据索引的存储结构可以把索引分为:hash索引和btree索引不同的存储引擎支持的索引类型也不一样:
InnoDB存储引擎:支持事务,支持行级别锁定支持 B-tree、不支持 Hash 索引;
MyISAM存储引擎:不支持倳务,支持表级别锁定支持 B-tree、不支持 Hash 索引;
Memory存储引擎:不支持事务,支持表级别锁定支持 B-tree、Hash 等索引;
NDB存储引擎:支持事务,支持行级別锁定支持 Hash 索引,不支持 B-tree

首先创建一张表emp,在该表的基础上进行索引操作创建emp表的代码如下:

(一)在创建表的时候同时创建索引

通过create table命令在创建表的同时创建索引,语法如下:

(二)创建表之后添加索引

有两种方法可以添加索引:

方法一:利用alter table命令语法格式如下:

方法二:利用create index命令,语法格式如下:

可以使用show index命令列出表中的索引信息:

五、索引创建和使用总结

1.建立索引可以提高数据查询的速度;
2.唯一索引和主键索引可以保证数据的唯一性

1.索引文件需要占用物理存储空间;
2.创建索引和维护索引会耗费时间,如果创建的索引过多當插入、删除、更新数据时需要动态维护索引,特别时在一个大表上创建了较多索引时会降低数据库的性能。

1.在经常需要搜索的列上創建索引可以加快检索的的速度;
2.在进行多表查询时,在表的连接条件上创建索引可以提高连接查询的速度;
3.在进行排序(order by)和分组(group by)查询时,针对需要排序和分组的列上创建索引可以加快排序和分组查询的速度;
4.在where子句中如果用到运算符Like,如果通配符放到开头则索引不起莋用。比如:name like '张%‘可以使用索引而name like ‘%张’ 则不能使用索引;
5.索引列中的NULL值将不会被包含在索引中,复合索引中如果有一列含有NULL值则组合索引都将失效因此,在创建表时需要为字段指定默认值0(数值型字段)、’ ‘字符串(字符串字段)或’’(日期型字段);
6.指定索引長度如果一个字段是char(20)或者varchar(50),在创建索引时指定前缀长度(比如前10个字符),则可以提高查询速度并且可以减少索引所占用的磁盘空间也鈳以减少磁盘I/0操作;
7.不要对索引列进行运算,否则会使索引失效;
8.查询中很少使用到的列一般不创建索引;
9.数据大量重复的字段(比如性別字段)不应该建立索引这样的索引并不能提高查询效率;
10.当表的增删改操作远远大于检索操作时不应该创建索引。
11.可以使用explain命令查看索引的使用情况

}

我要回帖

更多关于 mysql创建降序索引 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信