要想使用索引提高数据表的访问速度首先,需要创建一个索引创建索引的方式,有三种
创建表的时候,创建索引
这种方式最简单、方便语法格式
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