Mysql索引篇,在已创建的表中管理索引

2025-10-24 06:58:02

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)'));

Mysql索引篇,在已创建的表中管理索引

2、查看当前表中创建的索引

SHOW INDEX FROM test_7;

结果如图所示,以下是各列的释义

Table:表名

Non_unique:是否唯一索引,0是,1不是。

Key_name:索引名称

Seq_in_index:索引位置,单列索引为1,组合索引为每个索引的位置

Column_name:表示定义索引的列字段

Sub_part 表示索引的长度

Null:表示字段是否能为空值

Index_type:表示索引类型

Mysql索引篇,在已创建的表中管理索引

1、添加普通索引  

ALTER TABLE test_7 ADD INDEX tidx_1(col2);

使用Navicat查看创建的索

查看当前表中创建的索引

SHOW INDEX FROM test_7;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

2、添加唯一索引

ALTER TABLE test_7 ADD UNIQUE INDEX tidx_2(col3);

使用Navicat查看创建的索引

查看当前表中创建的索引

SHOW INDEX FROM test_7;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

3、添加组合索引

ALTER TABLE test_7 ADD UNIQUE INDEX tidx_4(col2,col3);

使用Navicat查看创建的索引

查看当前表中创建的索引

SHOW INDEX FROM test_7;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

4、添加全文索引(注意,全文索引仅能在MyISAM引擎中使用)

ALTER TABLE test_7 ADD FULLTEXT INDEX tidx_5(col5);

使用Navicat查看创建的索引

查看当前表中创建的索引

SHOW INDEX FROM test_7;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

5、添加空间索引(注意,空间索引仅能在MyISAM引擎中使用)

ALTER TABLE test_7 ADD SPATIAL INDEX tidx_5(col7);

使用Navicat查看创建的索引

查看当前表中创建的索引

SHOW INDEX FROM test_7;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

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;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

2、使用DROP INDEX语句删除索引

DROP INDEX 索引名 ON 表名

DROP INDEX tidx_2 ON test_7;

使用Navicat查看创建的索引

查看当前表中创建的索引

SHOW INDEX FROM test_7;

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

Mysql索引篇,在已创建的表中管理索引

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢