Mysql索引篇,在已创建的表中管理索引
1、创建测试表
DROP TABLE IF EXISTS `test_7`;
CREATE TABLE `test_7` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`col1` varchar(50) DEFAULT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(50) DEFAULT NULL,
`col4` int(11) DEFAULT NULL,
`col5` varchar(50) DEFAULT NULL,
`col6` int(11) DEFAULT NULL,
`col7` geometry DEFAULT NOT NULL,
INDEX SingleIdx(col1)
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
插入测试数据
INSERT INTO `test_7` VALUES ('1', 'aaa', '1', 'bbb', '2', 'ccc', '3', GeomFromText('POINT(108.9498710632 34.2588125935)'));
INSERT INTO `test_7` VALUES ('2', 'ddd', '4', 'eee', '5', 'fff', '7', GeomFromText('POINT(108.9498710632 34.2588125935)'));
INSERT INTO `test_7` VALUES ('3', 'ggg', '8', 'hhh', '9', 'iii', '10', GeomFromText('POINT(108.9498710632 34.2588125935)'));
INSERT INTO `test_7` VALUES ('4', 'jjj', '11', 'kkk', '12', 'lll', '13', GeomFromText('POINT(108.9498710632 34.2588125935)'));
INSERT INTO `test_7` VALUES ('5', 'mmm', '14', 'nnn', '15', 'ooo', '16', GeomFromText('POINT(108.9498710632 34.2588125935)'));
INSERT INTO `test_7` VALUES ('6', 'ppp', '17', 'qqq', '18', 'rrr', '19', GeomFromText('POINT(108.9498710632 34.2588125935)'));
INSERT INTO `test_7` VALUES ('7', 'sss', '20', 'ttt', '21', 'uuu', '22', GeomFromText('POINT(108.9498710632 34.2588125935)'));

2、查看当前表中创建的索引
SHOW INDEX FROM test_7;
结果如图所示,以下是各列的释义
Table:表名
Non_unique:是否唯一索引,0是,1不是。
Key_name:索引名称
Seq_in_index:索引位置,单列索引为1,组合索引为每个索引的位置
Column_name:表示定义索引的列字段
Sub_part 表示索引的长度
Null:表示字段是否能为空值
Index_type:表示索引类型

1、添加普通索引
ALTER TABLE test_7 ADD INDEX tidx_1(col2);
使用Navicat查看创建的索
查看当前表中创建的索引
SHOW INDEX FROM test_7;



2、添加唯一索引
ALTER TABLE test_7 ADD UNIQUE INDEX tidx_2(col3);
使用Navicat查看创建的索引
查看当前表中创建的索引
SHOW INDEX FROM test_7;



3、添加组合索引
ALTER TABLE test_7 ADD UNIQUE INDEX tidx_4(col2,col3);
使用Navicat查看创建的索引
查看当前表中创建的索引
SHOW INDEX FROM test_7;



4、添加全文索引(注意,全文索引仅能在MyISAM引擎中使用)
ALTER TABLE test_7 ADD FULLTEXT INDEX tidx_5(col5);
使用Navicat查看创建的索引
查看当前表中创建的索引
SHOW INDEX FROM test_7;



5、添加空间索引(注意,空间索引仅能在MyISAM引擎中使用)
ALTER TABLE test_7 ADD SPATIAL INDEX tidx_5(col7);
使用Navicat查看创建的索引
查看当前表中创建的索引
SHOW INDEX FROM test_7;



6、补充:另外可以用CREATE INDEX命令创建索引
结构是:CREATE INDEX 索引名 ON 表名(字段名);
示例讲解
1.创建普通索引
CREATE INDEX test1 ON test_8(aaa);
2.创建唯一索引
CREATE UNIQUE INDEX test2 ON test_8(bbb);
3.创建组合索引
CREATE INDEX test3 ON test_8(ccc,ddd);
4.创建全文索引
CREATE FULLTEXT INDEX test4 ON test_8(eee);
5.创建空间索引
CREATE SPATIAL INDEX test5 ON test_8(eee);
1、使用ALTER TABLE删除索引
语句结构 ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE test_7 DROP INDEX tidx_1;
使用Navicat查看创建的索引
查看当前表中创建的索引
SHOW INDEX FROM test_7;



2、使用DROP INDEX语句删除索引
DROP INDEX 索引名 ON 表名
DROP INDEX tidx_2 ON test_7;
使用Navicat查看创建的索引
查看当前表中创建的索引
SHOW INDEX FROM test_7;


