(1)登录mysql数据库
(2)创建数据库index_test
(3)创建表test_table1
(4)创建表test_table2,存储引擎为myisam
(5)使用alter table 语句在表test_table2的birth字段上建立名称为comdateidx的普通索引
(6)使用alter table语句在表test_table2的id字段上添加名称为uniqidx2的唯一索引,并以降序排列
(7)使用create index 在firstname、middlename和lastname三个字段上建立名称为multicolidx2的组合索引
(8)使用create index在title字段上建立名称为ftidx的全文索引
(9)使用alter table语句删除表test_table1中名称为uniqidx的唯一索引
(10)使用drop index语句删除表test_table2中名称为multicolidx2的组合索引
几个注意点
(免费学习推荐:mysql视频教程)
(1)登录mysql数据库c:\users\hudie>mysql -h localhost -u root -penter password: *******
(2)创建数据库index_testmysql> create database index_test;query ok, 1 row affected (0.06 sec)mysql> use index_test;database changed
(3)创建表test_table1mysql> create table test_table1 -> ( -> id int not null primary key auto_increment, -> name char(100) not null, -> address char(100) not null, -> description char(100) not null, -> unique index uniqidx(id), -> index multicolidx(name(20),address(30) ), -> index comidx(description(30)) -> );query ok, 0 rows affected (0.11 sec)mysql> show create table test_table1 \g*************************** 1. row *************************** table: test_table1create table: create table `test_table1` ( `id` int(11) not null auto_increment, `name` char(100) not null, `address` char(100) not null, `description` char(100) not null, primary key (`id`), unique key `uniqidx` (`id`), key `multicolidx` (`name`(20),`address`(30)), key `comidx` (`description`(30))) engine=innodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci1 row in set (0.06 sec)
可以看到在test_table表中成功创建了3个索引,分别是在id字段上名称为uniqidx的唯一索引;在name和address字段上的组合索引;在description字段上长度为30的普通索引。
(4)创建表test_table2,存储引擎为myisammysql> create table test_table2 -> ( -> id int not null primary key auto_increment, -> firstname char(100) not null, -> middlename char(100) not null, -> lastname char(100) not null, -> birth date not null, -> title char(100) null -> )engine=myisam;query ok, 0 rows affected (0.07 sec)
(5)使用alter table 语句在表test_table2的birth字段上建立名称为comdateidx的普通索引mysql> alter table test_table2 add index comdateidx(birth);query ok, 0 rows affected (0.13 sec)records: 0 duplicates: 0 warnings: 0
(6)使用alter table语句在表test_table2的id字段上添加名称为uniqidx2的唯一索引mysql> alter table test_table2 add unique index uniqidx(id);query ok, 0 rows affected (0.11 sec)records: 0 duplicates: 0 warnings: 0
(7)使用create index 在firstname和middlename两个字段上建立名称为 multicolidx2的组合索引mysql> create index multicolidx2 on test_table2(firstname,middlename);query ok, 0 rows affected (0.12 sec)records: 0 duplicates: 0 warnings: 0
(8)使用create index在title字段上建立名称为ftidx的全文索引mysql> create fulltext index ftidx on test_table2(title);query ok, 0 rows affected (0.13 sec)records: 0 duplicates: 0 warnings: 0
(9)使用alter table语句删除表test_table1中名称为uniqidx的唯一索引mysql> alter table test_table1 drop index uniqidx;query ok, 0 rows affected (0.09 sec)records: 0 duplicates: 0 warnings: 0
(10)使用drop index语句删除表test_table2中名称为multicolidx2的组合索引mysql> drop index multicolidx2 on test_table2;query ok, 0 rows affected (0.12 sec)records: 0 duplicates: 0 warnings: 0
几个注意点:1.索引对数据库的性能如此重要,如何使用它?
如果索引列较少,则需要的磁盘空间和维护开销都较少。如果在一个大表上创建了多种组合索引,索引文件也会膨胀很快。另外索引较多,可覆盖更多的查询。尝试添加、删除、修改索引,不影响数据库架构或应用程序设计。2.尽量使用短索引
对字符串类型的字段进行索引,如果可能应该指定一个前缀长度。例如,有一个char(255)的列,如果在前 10或30个字符内多数值是唯一的,就不需要对整个列进行索引。短索引不仅可以提高查询速度,也能节省磁盘空间、减少i/o操作。相关免费学习推荐:mysql数据库(视频)
以上就是详解mysql如何创建索引(案例)的详细内容。
