当前位置: 澳门新濠3559 > 数据库 > 正文

首先请查看不同引擎支持的索引类型,创建索引

时间:2019-12-09 01:05来源:数据库
第风姿洒脱请查看分歧引擎扶持的索引类型:累积引擎简单介绍 。 MySQL索引操作命令小结,mysql索引小结 创制索引 开创索引的语法是: 复制代码 代码如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] I

第风姿洒脱请查看分歧引擎扶持的索引类型:累积引擎简单介绍 。

MySQL索引操作命令小结,mysql索引小结

创制索引

开创索引的语法是:

复制代码 代码如下:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [USING index_type]
    ON tbl_name (index_col_name,...)
 
index_col_name:
    col_name [(length)] [ASC | DESC]

对此CHAWrangler和VARCHA冠道列,只用一列的后生可畏有的就可成立索引。创造索引时,使用col_name(length卡塔尔语法,对前缀编写制定索引。前缀包涵每列值的前length个字符。BLOB和TEXT列也得以编制索引,不过必需付出前缀长度。

此间体现的话语用于创建叁个目录,索引使用列名称的前拾个字符。

复制代码 代码如下:

CREATE INDEX part_of_name ON customer (name(10));

因为半数以上名号的前12个字符经常分化,所以此索引不会比使用列的全名成立的目录速度慢非常多。其它,使用列的一片段创造索引能够使索引文件大大减小,进而节省了多量的磁盘空间,有比十分的大希望加强INSERT操作的快慢。

前缀最长为255字节。对于MyISAM和InnoDB表,前缀最长为1000字节。注意前缀的限长以字节计,而CREATE INDEX语句中的前缀长度指的是字符的多寡。对于使用多字节字符集的列,在钦定列的前缀长度时,要思谋那或多或少。

在MySQL中:

·唯有当您正在利用MyISAM, InnoDB或BDB表类型时,您可以向有NULL值的列中加多索引。

·只有当你正在使用MyISAM, BDB或InnoDB表类型时,您能够向BLOB或TEXT列中增多索引。

一个index_col_name规约能够以ASC或DESC为最后。那个重视词以后能够增添,用于钦命依次增加或递减索引值存储。近来,这个关键词被拆解深入分析,然而被忽略;索引值均以依次增加顺序存款和储蓄。

有个别储存引擎允许在创造索引时钦赐索引类型。index_type钦命语句的语法是USING type_name。差异的累积引擎所扶助的type_name值已呈现在下表中。借使列有多少个索引类型,当没有一些名index_type时,第三个品类是默许值。

存储引擎

允许的索引类型

MyISAM

BTREE

InnoDB

BTREE

MEMORY/HEAP

HASH, BTREE

示例:

复制代码 代码如下:

CREATE TABLE lookup (id INT) ENGINE = MEMORY;
CREATE INDEX id_index USING BTREE ON lookup (id);

TYPE type_name能够用作USING type_name的同义词,用于钦命索引类型。不过,USING是首荐的格式。此外,在目录规约语法中,位于索引类型前面包车型大巴目录名称没办法运用TYPE。那是因为,与USING不一样,TYPE不是保留词,由此会被以为是一个索引名称。

首先请查看不同引擎支持的索引类型,创建索引的语法是。即使你钦定的索引类型在加以的存款和储蓄引擎中不合规,可是有别的的索引类型符合引擎使用,而且不会耳熏目染查询功效,则引擎应运用此类型。

FULLTEXT索引只可以对CHA君越, VARCHA凯雷德和TEXT列编写制定索引,並且只可以在MyISAM表中编辑。

SPATIAL索引只可以对空间列编写制定索引,况且只可以在MyISAM表中编辑。

利用alter的艺术创制索引

复制代码 代码如下:

alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;

查询索引

复制代码 代码如下:

SHOW INDEX FROM table_name;

去除索引

复制代码 代码如下:

drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;

其间,在前方的两条语句中,都剔除了table_name中的索引index_name。而在结尾一条语句中,只在剔除PLacrosseIMAKugaY KEY索引中央银行使,因为叁个表只或者有八个PMuranoIMAOdysseyY KEY索引,因而不供给钦点索引名。

创制索引 成立索引的语法是: 复制代码 代码如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_t...

查看表中已经存在 index:show index from table_name;

集中索引和非聚焦索引概念见:集中索引与非集中索引 和 集中索引 。 覆盖索引见:蒙面索引 。

开创和删除索引 目录的制造能够在CREATE TABLE语句中开展,也得以单独用CREATE INDEX或ALTE陆风X8 TABLE来给表扩展索引。删除索引可以动用ALTEHaval TABLE或DROP INDEX语句来促成。

1. InnoDB的每多少个表都会有一个聚焦索引(第一索引,主键索引)。InnoDB根据主键实行联谊,若无定义主键,InnoDB会试着使用唯风流倜傥的非空索引来代表。若无这种索引,InnoDB就能定义隐讳的主键然后在上头进行联谊。

(1)使用ALTE瑞虎 TABLE语句制造索引。 语法如下:
alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;
内部包含平时索引、UNIQUE索引和PQX56IMAEvoqueY KEY索引3种成立索引的格式,table_name是要加进索引的表名,column_list提出对什么样列举办索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将依靠第二个索引列赋四个名号。此外,ALTER TABLE允许在单个语句中改正四个表,因而能够并且创立四个目录。
开创索引的示范如下:
澳门新濠3559,mysql> use tpsc
Database changed
mysql> alter table tpsc add index shili (tpmc ) ;
Query OK, 2 rows affected (0.08 sec)
Records: 2 Duplicates: 0 Warnings: 0

2. InnoDB不支持非主键的集中索引,暗中认可在主键上创制聚焦索引(因为有了主键就有了目录,大量insert速度会变慢?先disable主键再insert?)。假设想在某列塑造聚焦索引,那么只可以将该列设为主键。

(2)使用CREATE INDEX语句对表扩张索引。 能够扩展常常性索引和UNIQUE索引二种。其格式如下:
create index index_name on table_name (column_list) ;
create unique index index_name on table_name (column_list) ;
说明:table_name、index_name和column_list具有与ALTER TABLE语句中千篇一律的含义,索引名不可选。别的,不可能用CREATE INDEX语句成立PRubiconIMAHighlanderY KEY索引。

3. 聚集索引选拔B+Tree。别的索引不接受B+Tree。若是其余索引使用B-Tree,则叶子节点中存款和储蓄的数目为主键,即先用B-Tree找到该列所属的主键(存款和储蓄在叶子节点上),再主键通过B+Tree找到该行中全数所需数据(叫做回表?)。

(3)删除索引。 去除索引能够使用ALTE翼虎 TABLE或DROP INDEX语句来落到实处。DROP INDEX能够在ALTETiguan TABLE内部作为一条语句处理,其格式如下:
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;
中间,在前面包车型地铁两条语句中,都剔除了table_name中的索引index_name。而在结尾一条语句中,只在剔除PTucsonIMATiggoY KEY索引中行使,因为二个表只也许有一个P索罗德IMA大切诺基Y KEY索引,因而无需钦定索引名。若无创制P大切诺基IMAPAJEROY KEY索引,但表具备二个或几个UNIQUE索引,则MySQL将去除第一个UNIQUE索引。
假使从表中删除某列,则索引会受影响。对于多列组合的目录,借使去除此中的某列,则该列也会从索引中剔除。假诺除去组成索引的具有列,则全体索引将被删去。
去除索引的操作,如上边包车型客车代码:
mysql> drop index shili on tpsc ;
Query OK, 2 rows affected (0.08 sec)
Records: 2 Duplicates: 0 Warnings: 0
该语句删除了后面创设的名号为“shili”的目录。

  1. B-Tree是索引和数据分裂文件存款和储蓄?应该都是积存在近似文件中。

5. 汇聚的覆盖索引暗中认可存在。非聚焦覆盖索引的确立须求查询列包涵在主键中(组合主键,非最左),并对查询列建构目录。

 

 创造索引语法如下:
    CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [USING index_type]
    ON tbl_name (index_col_name,...)
    index_col_name:
    col_name [(length)] [ASC | DESC]
 
目录的仓库储存类型近年来独有两种(btree和hash),具体和表的方式相关:
    myisam     btree
    innodb      btree
    memory/heap hash,btree

 

1. 

alter table table_name add index index_name (column_list卡塔尔(英语:State of Qatar) ;       普通索引

alter table table_name add unique (column_list卡塔尔国 ;                          独一索引

alter table table_name add primary key (column_list卡塔尔国 ;                  主键索引

里头囊括平时索引、UNIQUE索引和P福特ExplorerIMAPRADOY KEY索引3种创设索引的格式,table_name是要加进索引的表名,column_list建议对什么列实行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将依照第4个索引列赋四个称号。

2.

create index index_name on table_name (column_list) ;

create unique index index_name on table_name (column_list) ;

说明:table_name、index_name和column_list具备与ALTER TABLE语句中后生可畏致的意思,索引名不可选。其余,无法用CREATE INDEX语句创设PWranglerIMA奥迪Q7Y KEY索引。

 

3. 刨除索引

drop index index_name on table_name ;

*alter table table_name drop index index_name ;*

**alter table table_name drop primary key ;**

*里头,在前方的两条语句中,都剔除了table_name中的索引index_name。而在终极一条语句中,只在剔除P库罗德IMARAV4Y KEY索引中运用,因为三个表只也许有多个P宝马X5IMATiggoY KEY索引,因而没有必要钦命索引名。若无开创P凯雷德IMAPRADOY KEY索引,但表具备二个或四个UNIQUE索引,则MySQL将去除第三个UNIQUE索引。***

编辑:数据库 本文来源:首先请查看不同引擎支持的索引类型,创建索引

关键词:

  • 上一篇:没有了
  • 下一篇:没有了