MySQL基础知识---------CREATE INDEX语法

CREATE INDEX用于在MySQL中向已有表添加索引,常用于提升查询性能。它可以创建单列或多列索引,并支持指定列的前缀长度。前缀长度限制为255字节,但对于某些表类型如MyISAM和InnoDB,可达到1000字节。NULL值、BLOB和TEXT列的索引创建有特定的表类型要求。索引类型可以通过USING关键字指定,如USING BTREE或USING HASH,不同存储引擎支持的类型不同。全文索引(FULLTEXT)仅适用于MyISAM表的CHAR, VARCHAR和TEXT列。" 124595746,311799,Python初学者教程:Turtle海龟库绘制几何图形,"['Python', 'Turtle', '图形编程', '初学者教程', 'IDE']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

CREATE INDEX被映射到一个ALTER TABLE语句上,用于创建索引。请参见13.1.2节,“ALTER TABLE语法”

通常,当使用CREATE TABLE创建表时,也同时在表中创建了所有的索引。请参见13.1.5节,“CREATE TABLE语法”CREATE INDEX允许您向已有的表中添加索引。

格式为(col1, col2,...)的一个列清单创建出一个多列索引。通过串接给定列中的值,确定索引值的格式。

对于CHARVARCHAR列,只用一列的一部分就可创建索引。创建索引时,使用col_name(length)语法,对前缀编制索引。前缀包括每列值的前length字符。BLOBTEXT列也可以编制索引,但是必须给出前缀长度。

此处展示的语句用于创建一个索引,索引使用列名称的前10个字符。

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

因为多数名称的前10个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。另外,使用列的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。

前缀最长为255字节。对于MyISAMInnoDB表,前缀最长为1000字节。注意前缀的限长以字节计,而CREATE INDEX语句中的前缀长度指的是字符的数目。对于使用多字节字符集的列,在指定列的前缀长度时,要考虑这一点。

MySQL 5.1中:

·         只有当您正在使用MyISAM, InnoDBBDB表类型时,您可以向有NULL值的列中添加索引。

·         只有当您正在使用MyISAM, BDBInnoDB表类型时,您可以向BLOBTEXT列中添加索引。

一个index_col_name规约可以以ASCDESC为结尾。这些关键词将来可以扩展,用于指定递增或递减索引值存储。目前,这些关键词被分析,但是被忽略;索引值均以递增顺序存储。

部分储存引擎允许在创建索引时指定索引类型。index_type指定语句的语法是USING type_name。不同的储存引擎所支持的type_name值已显示在下表中。如果列有多个索引类型,当没有指定index_type时,第一个类型是默认值

存储引擎

允许的索引类型

MyISAM

BTREE

InnoDB

BTREE

MEMORY/HEAP

HASHBTREE

示例:

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不是保留词,因此会被认为是一个索引名称。

如果您指定的索引类型在给定的储存引擎中不合法,但是有其它的索引类型适合引擎使用,并且不会影响查询功能,则引擎应使用此类型。

要了解更多有关MySQL如何使用索引的信息,请参见7.4.5节,“MySQL如何使用索引”

FULLTEXT索引只能对CHAR, VARCHARTEXT列编制索引,并且只能在MyISAM表中编制。请参见12.7节,“全文搜索功能”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值