MySQL 如何添加索引
Posted 草莓摇摇奶昔-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 如何添加索引相关的知识,希望对你有一定的参考价值。
表中添加索引的三种方式
-
创建表的时候创建索引
隐式创建:使用CREATE TABLE创建表时,在声明有主键约束、唯一性约束、外键约束的字段上,会自动的添加相关的索引。
#CREATE TABLE时隐式创建索引
CREATE TABLE dept(
dept_id INT PRIMARY KEY AUTO_INCREMENT,
dept_name VARCHAR(20)
);
CREATE TABLE emp(
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(20) UNIQUE,
dept_id INT,
CONSTRAINT emp_dept_id_fk FOREIGN KEY(dept_id) REFERENCES dept(dept_id)
);
可以使用 SHOW INDEX FROM 表名,来查看索引,如下:
显示创建:
- 创建普通索引
#创建普通索引
CREATE TABLE book(
book_id INT,
book_name VARCHAR(100),
`authors` VARCHAR(100),
info VARCHAR(100),
`comment` VARCHAR(100),
year_publication YEAR,
#声明普通索引
INDEX idx_bname(book_name)
);
- 创建唯一索引
声明有唯一索引的字段,在添加数据时,要保证唯一性,但是可以添加NULL值。
#创建唯一索引
CREATE TABLE book1(
book_id INT,
book_name VARCHAR(100),
`authors` VARCHAR(100),
info VARCHAR(100),
`comment` VARCHAR(100),
year_publication YEAR,
UNIQUE INDEX uk_idx_cmt(`comment`)
);
- 创建主键索引
通过定义主键约束的方式定义主键索引,如上所示。不能类比以PRIMARY KEY INDEX方式创建。
- 创建单列索引
这个没必要再赘述,以上作用于单个字段索引的都可称之为单列索引。
- 创建联合索引
如下表,联合索引会以book_id, book_name, info的顺序进行排序,声明时顺序颠倒排序也会变,即遵循最左前缀原则。所以要把最常检索的字段放在最前面!
#创建联合索引
CREATE TABLE book2(
book_id INT,
book_name VARCHAR(100),
`authors` VARCHAR(100),
info VARCHAR(100),
`comment` VARCHAR(100),
year_publication YEAR,
#声明普通索引
INDEX mulidx_bid_bname_info(book_id, book_name, info)
);
- 创建全文索引
值得说明的是,全文索引比LIKE + %的方式快N倍!但要注意版本支不支持!此外,如果需要全文索引的是大量数据,建议先添加数据,后创建索引。
#创建全文索引
CREATE TABLE book3(
book_id INT,
book_name VARCHAR(100),
`authors` VARCHAR(100),
info VARCHAR(100),
`comment` VARCHAR(100),
year_publication YEAR,
FULLTEXT INDEX futxt_idx_info(info(50))
);
在表已经创建之后再添加索引
- 通过 ALTER TABLE 表名 ADD 索引 这种方式来添加索引
CREATE TABLE book4(
book_id INT,
book_name VARCHAR(100),
`authors` VARCHAR(100),
info VARCHAR(100),
`comment` VARCHAR(100),
year_publication YEAR,
);
ALTER TABLE book4 ADD INDEX idx_cmt(`comment`);
其他的索引也以类似的方法创建,不再赘述。
- 通过 CREATE INDEX 索引 ON 表(列)
CREATE INDEX idx_cmt ON book4(comment);
以上是关于MySQL 如何添加索引的主要内容,如果未能解决你的问题,请参考以下文章