MySQL索引分类
主要有单值索引和复合索引两种,具体可分成如下:
- 主键索引:
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引 - 普通索引:
这是最基本的索引,它没有任何限制,单列允许重复
create index idx_name on user(
name(20)
);
- 唯一索引:
与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似
CREATE UNIQUE INDEX idx_email ON user(
email
);
- 全文索引
MySQL支持全文索引和搜索功能。MySQL中的全文索引类型为FULLTEXT的索引。 FULLTEXT 索引仅可用于 MyISAM表;代码如下:
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database');
- 复合索引:
即一个索引包含多个列,代码如下:
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name)
);