-- 在book表中的year_publication字段上建立普通索引
CREATE TABLE book
(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
authors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL,
year_publication YEAR NOT NULL,
INDEX(year_publication)
);
-- 使用EXPLAIN语句查看索引是否正在使用
explain select * from book where year_publication=1990;
-- 创建一个表t1,在表中的id字段上使用UNIQUE关键字创建唯一索引
CREATE TABLE t1
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
UNIQUE INDEX UniqIdx(id)
);
-- 创建一个表t2,在表中的name字段上使用创建单列索引
CREATE TABLE t2
(
id INT NOT NULL,
name CHAR(50) NULL,
INDEX SingleIdx(name(20))
);
-- 创建表t3,在表中的id,name和info字段上建立组合索引
CREATE TABLE t3
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
INDEX MultiIdx(id, name, info(100))
);
-- 创建表t4,在表中的info字段上建立全文索引
CREATE TABLE t4
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
FULLTEXT INDEX FullTxtIdx(info)
) ENGINE=MyISAM;
-- 创建表t5,在空间类型为GEOMETRY的字段上创建空间索引
CREATE TABLE t5 (
g GEOMETRY NOT NULL,
SPATIAL INDEX spatIdx ( g )
) ENGINE = MyISAM;
格式:ALTER TABLE 表名 ADD[UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [索引名] (索引字段名)[ASC|DESC]
-- 在book表中的bookname字段上建立名为BkNameIdx的普通索引
ALTER TABLE book ADD INDEX BkNameIdx ( bookname ( 30 ) );
-- 在book表的bookId字段上建立名称为UniqidIdx 的唯一索引
ALTER TABLE book ADD UNIQUE INDEX UniqidIdx ( bookId );
-- 在book表的comment字段上建立单列索引
ALTER TABLE book ADD INDEX BkcmtIdx ( comment(50) );
-- 在book表的authors和info字段上建立组合索引
ALTER TABLE book ADD INDEX BkAuAndInfoIdx ( authors(20),info(50) );
-- 创建表t6,在t6表上使用ALTER TABLE创建全文索引
-- 首先创建表t6,注意修改ENGINE参数为MyISAM,MySQL默认引擎InnoDB不支持全文索引
CREATE TABLE t6
(
id INT NOT NULL,
info CHAR(255)
) ENGINE=MyISAM;
--使用ALTER TABLE语句在info字段上创建全文索引:
ALTER TABLE t6 ADD FULLTEXT INDEX infoFTIdx ( info );
-- 创建表t7,在t7的空间数据类型字段g上创建名称为spatIdx的空间索引
CREATE TABLE t7 ( g GEOMETRY NOT NULL )ENGINE=MyISAM;
-- 使用ALTER TABLE在表t7的g字段建立空间索引,
ALTER TABLE t7 ADD SPATIAL INDEX spatIdx(g);
格式:CREATE [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] 索引名称 ON 表名(创建索引的字段名[length])[ASC|DESC]
-- 在book表中的bookname字段上建立名为BkNameIdx的普通索引
CREATE INDEX BkNameIdx ON book(bookname);
-- 在book表的bookId字段上建立名称为UniqidIdx 的唯一索引
CREATE UNIQUE INDEX UniqidIdx ON book ( bookId );
-- 在book表的comment字段上建立单列索引
CREATE INDEX BkcmtIdx ON book(comment(50) );
-- 在book表的authors和info字段上建立组合索引
CREATE INDEX BkAuAndInfoIdx ON book ( authors(20),info(50) );
-- 删除表t6,重新建立表t6,在t6表中使用CREATE INDEX语句,在CHAR类型的info字段上创建全文索引
drop table t6;
CREATE TABLE t6
(
id INT NOT NULL,
info CHAR(255)
) ENGINE=MyISAM;
CREATE FULLTEXT INDEX ON t6(info);
-- 删除表t7,重新创建表t7,在t7表中使用CREATE INDEX语句,在空间数据类型字段g上创建名称为spatIdx的空间索引
-- 首先删除表t7,并重新建立该表
drop table t7;
CREATE TABLE t7 ( g GEOMETRY NOT NULL )ENGINE=MyISAM;
-- 使用CREATE INDEX语句在表t7的g字段建立空间索引,
CREATE SPATIAL INDEX spatIdx ON t7 (g);
show index from table_name;
show keys from table_name;
-- 删除book表中的名称为UniqidIdx的唯一索引
ALTER TABLE book DROP INDEX UniqidIdx;
-- 删除book表中名称为BkAuAndInfoIdx的组合索引
DROP INDEX BkAuAndInfoIdx ON book;
ALTER TABLE Student ADD PRIMARY KEY (ID), ADD INDEX (Name,Info);
原文:https://www.cnblogs.com/firebet/p/12199587.html