MYSQL创建表的时候如何加“索引”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL创建表的时候如何加“索引”?相关的知识,希望对你有一定的参考价值。
兄弟,primary key是主键,每个表只能有一个主键,而且数据是唯一的。\x0d\x0a可以这样写:\x0d\x0aCREATE TABLE IF NOT EXISTS `".$ctb_name."` (\x0d\x0a `id` INT(9) NOT NULL AUTO_INCREMENT PRIMARY KEY,\x0d\x0a `keyid` VARCHAR(20) NOT NULL,\x0d\x0a `key` VARCHAR(20) NOT NULL,\x0d\x0a `stauts` BOOL NOT NULL DEFAULT'0',\x0d\x0aindex `idx_status`(`status`)\x0d\x0a )ENGINE = MYISAM DEFAULT CHARSET=utf8;\x0d\x0a不过,status是bool类型的字段,只有true和false,区分度太低,没有必要加索引。\x0d\x0a\x0d\x0a索引目的是为了使查询更快,区分度小的时候不如全表扫描。 参考技术A 兄弟,primary key是主键,每个表只能有一个主键,而且数据是唯一的。可以这样写:
CREATE TABLE IF NOT EXISTS `".$ctb_name."` (
`id` INT(9) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`keyid` VARCHAR(20) NOT NULL,
`key` VARCHAR(20) NOT NULL,
`stauts` BOOL NOT NULL DEFAULT'0',
index `idx_status`(`status`)
)ENGINE = MYISAM DEFAULT CHARSET=utf8;
不过,status是bool类型的字段,只有true和false,区分度太低,没有必要加索引。
索引目的是为了使查询更快,区分度小的时候不如全表扫描。
MySQL创建表的时候创建索引
要想使用索引提高数据表的访问速度,首先,需要创建一个索引,创建索引的方式,有三种。
创建表的时候,创建索引
这种方式最简单、方便,语法格式
CREATE TABLE 表名(字段名 数据类型[完整性约束条件],
字段名 数据类型 [完整性约束条件],
……
字段名 数据类型 [UNIQUE | FULLTEXT |SPATIAL] INDEX | KEY
[别名](字段名1 [(长度)])[ASC|DESC]);
参数说明
UNIQUE——可选参数,表示唯一索引
FULLTEXT——可选参数,表示全文索引
SPATITL——可选参数,表示空间索引
INDEX和KEY——用来表示字段的索引,二者选一即可
别名——可选参数,表示创建的索引名称
字段名1——指定索引对应字段的名称
长度——可选参数,用于表示索引的长度
ASC和DESC——可选参数,其中,ASC表示升序排序,DESC表示降序排序。
创建普通索引
在t1表中的id字段上创建索引
查看索引,使用SHOW CREATE TABLE语句,查看表的结构,可以看出,id字段上已经创建了一个名称为id的索引。
查看索引是否使用
可以使用EXPLAIN进行查看
可以看出,possible_keys: id和key: id
possible_keys和key的值都为id,说明id索引已经存在,并且已经开始被使用了。
创建唯一性索引
创建一个表名为t2的表,在表中的id字段上建立索引名为unique_id的唯一性索引,并且,按照升序排序。
使用SHOW CREATE TABLE查看表的结构。
可以看出,id字段上已经创建了一个名词为unique_id的唯一性索引。
创建全文索引
创建一个表名为t3,在表中的name字段上建立索引名为fulltext_name的全文索引。
使用SHOW CREATE TABLE查看表的结构。
可以看出,name字段上已经建立了一个名为fulltext_name的全文索引。
注意,目前只有MyISAM存储引擎支持全文索引,InnoDB存储引擎不支持全文索引,因此,在建立全文索引时,一定要注意表存储引擎的类型,对于经常需要索引的字符串、文字数据等信息,可以考虑存储到MyISAM存储引擎的表中。
创建单列索引
创建一个表名为t4的表,在表中的name字段上建立索引名为single_name的单列索引。
使用SHOW CREATE TABLE查看数据表的结构。
可以看出,name字段上已经建立了一个名词为single_name的单列索引,并且,索引的长度为20。
创建多列索引
创建一个表名为t5的表,在表中的id和name字段上建立索引名为multi的主列索引。
使用SHOW CREATE TABLE查看表的结构。
可以看出,id和name字段上已经建立了一个名为multi的多列索引。
注意,在多列索引中,只有查询条件中使用了,这些字段中的第一个字段时,多列索引才会被使用。
为了验证这个说法,将id字段作为查询条件,通过EXPLAIN语句查看索引的使用情况,执行如下
可以看出,possible_keys和key的值都为multi,说明multi索引已经存在,并且,已经开始被使用了。
但是,如果只使用name字段作为查询条件,执行如下。
可以看出,possible_keys和key的值,都为NULL,说明multi索引还没有被使用。
创建空间索引
创建一个表名为t6的表,在空间类型为GEOMETRY的字段上创建空间索引。
使用SHOW CREATE TABLE查看表的结构
可以看出,t6表中的space字段上已经建立了一个名为sp的空间索引。
注意,创建空间索引时,所在字段的值不能为空值,并且,表的存储引擎为MyISAM。
以上是关于MYSQL创建表的时候如何加“索引”?的主要内容,如果未能解决你的问题,请参考以下文章