1)普通索引
这是最基本的索引类型,基于普通字段建?的索引,没有任何限制。
CREATE INDEX <索引的名字> ON tablename (字段名);
ALTER TABLE tablename ADD INDEX [索引的名字] (字段名);
CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名)
);
2)唯?索引
与"普通索引"类似,不同的就是:索引字段的值必须唯?,但允许有空值 。
CREATE UNIQUE INDEX <索引的名字> ON tablename (字段名);
ALTER TABLE tablename ADD UNIQUE INDEX [索引的名字] (字段名);
CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (字段名)
;
3)主键索引
它是?种特殊的唯?索引,不允许有空值。在创建或修改表时追加主键约束即可,每个表只能有?个主键。
CREATE TABLE tablename ( [...], PRIMARY KEY (字段名) );
ALTER TABLE tablename ADD PRIMARY KEY (字段名);
4)复合索引
?户可以在多个列上建?索引,这种索引叫做组复合索引(组合索引)。复合索引可以代替多个单?索引,相?多个单?索引复合索引所需的开销更?。
CREATE INDEX <索引的名字> ON tablename (字段名1,字段名2...);
ALTER TABLE tablename ADD INDEX [索引的名字] (字段名1,字段名
2...);
CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名1,
字段名2...) );
- 复合索引使?注意事项:
何时使?复合索引,要根据where条件建索引,注意不要过多使?索引,过多使?会对更新操作效率有很?影响。
如果表已经建?了(col1,col2),就没有必要再单独建?(col1);如果现在有(col1)索引,如果查询需要col1和col2条件,可以建?(col1,col2)复合索引,对于查询有?定提?。
5) 全?索引
查询操作在数据量?较少时,可以使?like模糊查询,但是对于?量的?本数据检索,效率很低。如果使?全?索引,查询速度会?like快很多倍。在MySQL 5.6 以前的版本,只有MyISAM存储引擎?持全?索引,从MySQL 5.6开始MyISAM和InnoDB存储引擎均?持。
CREATE FULLTEXT INDEX <索引的名字> ON tablename (字段名);
ALTER TABLE tablename ADD FULLTEXT [索引的名字] (字段名);
CREATE TABLE tablename ( [...], FULLTEXT KEY [索引的名字]
(字段名) ;
全?索引?式有?然语?检索 IN NATURAL LANGUAGE MODE和布尔检索IN BOOLEAN MODE两种和常?的like模糊查询不同,全?索引有??的语法格式,使? match 和against 关键字,?如
SELECT * FROM users3 WHERE MATCH(NAME) AGAINST('aabb');
-- * 表示通配符,只能在词的后?
SELECT * FROM users3 WHERE MATCH(NAME) AGAINST('aa*' IN
BOOLEAN MODE);
全?索引使?注意事项:
- 全?索引必须在字符串、?本字段上建?。
- 全?索引字段值必须在最?字符和最?字符之间的才会有效。
(innodb:3-84;myisam:4-84)