普通索引
最基本的索引类型,没有任何限制
CREATE TABLE table_name(
column_name1 date_type,
column_name2 date_type,
...
INDEX [index_name] (column_name)
);
或:
CREATE INDEX index_name ON table_name(column_name);
或:
ALTER TABLE table_name ADD INDEX [index_name] (column_name);
唯一索引
唯一索引的字段值必须唯一,但允许空值
CREATE TABLE table_name(
column_name1 date_type,
column_name2 date_type,
...
UNIQUE INDEX [index_name] (column_name)
);
或:
CREATE UNIQUE INDEX index_name ON table_name(column_name);
或:
ALTER TABLE table_name ADD UNIQUE INDEX [index_name] (column_name);
主键索引
特殊的唯一索引,不允许空值,且每张表只能有一个主键索引。
CREATE TABLE table_name(
column_name1 date_type,
column_name2 date_type,
...
PRIMARY KEY (column_name)
);
或:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
复合索引(组合索引)
复合索引指在多个字段上创建的索引。使用复合索引遵循“最左前缀”的规则。如“省+城市”的复合索引,这样的索引只在以“省+城市”的顺序时有用(即“省”、“省+城市”)。如果只想按“城市”排序,则这种索引没有用处。
注意:如果表已经有复合索引(col1,col2),则不需要再创建col1索引。
CREATE TABLE table_name(
column_name1 date_type,
column_name2 date_type,
...
INDEX [index_name] (column_name1,column_name2,...)
);
或:
CREATE INDEX index_name ON table_name(column_name1,column_name2,...);
或:
ALTER TABLE table_name ADD INDEX [index_name] (column_name1,column_name2,...);
全文索引
全文索引适用于在一大串文本中进行查找,并且数据类型必须是CHAR、VARCHAR、TEXT。
CREATE TABLE table_name(
column_name1 date_type,
column_name2 date_type,
...
FULLTEXT INDEX [index_name] (column_name)
);
或:
CREATE FULLTEXT INDEX index_name ON table_name(column_name);
或:
ALTER TABLE table_name ADD FULLTEXT INDEX [index_name] (column_name);
空间索引
设置为空间索引的字段的数据类型必须是空间数据类型,如GEOMETRY、POINT、LINESTRING或POLYGON,并且必须设置为NOT NULL。
CREATE TABLE table_name(
column_name1 date_type,
column_name2 date_type,
...
SPATIAL INDEX [index_name] (column_name)
);
或:
CREATE SPATIAL INDEX index_name ON table_name(column_name);
或:
ALTER TABLE table_name ADD SPATIAL INDEX [index_name] (column_name);
删除索引
删除索引使用ALTER TABLE语句或DROP INDEX语句
ALTER TABLE table_name DROP INDEX index_name;
或:
DROP INDEX index_name ON table_name;
注意:主键索引删除使用以下语句
ALTER TABLE table_name DROP PRIMARY KEY;