MySql学习day04:索引

索引在Mysql中是存储引擎用于快速找到记录的一种数据结构(BTree,平衡树),索引对于数据库的良好性能是非常关键的,尤其是当表中的数据量越来越大的时候,索引对于性能的影响愈发重要。

索引相当于字典的目录,如果查找某个字的时候可以通过目录,提高查询速度,否则需要翻阅字典的每一页。

使用索引的目的:提高查询速度。

索引特点:创建和维护索引会消耗很多时间与磁盘空间,但是查询速度大大提高。

(创建字典目录需要时间,字典目录需要占字典大小)

 

语法1:创建表时,添加索引。

create table 表名(

字段名1 数据类型,

字段名2 数据类型,

...,

Index | key  [索引名称]  (字段名)

);

语法2:创建完表后,添加索引。

create table 表名(

字段名1 数据类型,

字段名2 数据类型,

...,

);

Alter table 表名 add {unique | primay key| index...索引种类} 索引名(字段名)

 

 

索引添加方式:

1:普通索引:
create table t1(
id int primary key,
name varchar(20)
);
show create table t1;
-- CREATE TABLE `t1` (
--   `id` int(11) NOT NULL,
--   `name` varchar(20) DEFAULT NULL,
--   PRIMARY KEY (`id`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
alter table t1 add index name_index(name);
show create table t1;
-- CREATE TABLE `t1` (
--   `id` int(11) NOT NULL,
--   `name` varchar(20) DEFAULT NULL,
--   PRIMARY KEY (`id`),
--   KEY `name_index` (`name`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

2:唯一索引
create table t2(
id int,
name varchar(20)
);
show create table t2;
-- CREATE TABLE `t2` (
--   `id` int(11) DEFAULT NULL,
--   `name` varchar(20) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
alter table t2 add unique name_index(name);
show create table t2;
-- CREATE TABLE `t2` (
--   `id` int(11) DEFAULT NULL,
--   `name` varchar(20) DEFAULT NULL,
--   UNIQUE KEY `name_index` (`name`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

3:主键索引
create table t3(
id int,
name varchar(20)
);
show create table t3;
-- CREATE TABLE `t3` (
--   `id` int(11) DEFAULT NULL,
--   `name` varchar(20) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
alter table t3 add primary key(id);
show create table t3;
-- CREATE TABLE `t3` (
--   `id` int(11) NOT NULL DEFAULT '0',
--   `name` varchar(20) DEFAULT NULL,
--   PRIMARY KEY (`id`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

4:多列索引
create table t4(
id int,
name varchar(20),
phone int,
address varchar(20)
);
show create table t4;
-- CREATE TABLE `t4` (
--   `id` int(11) DEFAULT NULL,
--   `name` varchar(20) DEFAULT NULL,
--   `phone` int(11) DEFAULT NULL,
--   `address` varchar(20) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
alter table t4 add index(name,phone,address);
show create table t4;
-- CREATE TABLE `t4` (
--   `id` int(11) DEFAULT NULL,
--   `name` varchar(20) DEFAULT NULL,
--   `phone` int(11) DEFAULT NULL,
--   `address` varchar(20) DEFAULT NULL,
--   KEY `name` (`name`,`phone`,`address`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

 

5:删除索引
drop index name_index on t1;
show create table t1;
-- CREATE TABLE `t1` (
--   `id` int(11) NOT NULL,
--   `name` varchar(20) DEFAULT NULL,
--   PRIMARY KEY (`id`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

猜你喜欢

转载自blog.csdn.net/weixin_43800846/article/details/89220421
今日推荐