索引的创建和删除

创建普通索引

语法

create table t1 (

idint primary key,

name varchar(10),

sex ENUM(‘F’,’M’,’UN’)

index(name)

)engine=myisam character set utf8;

创建索引

mysql> create table t_1 ( id int, namevarchar(10),index(name) );

Query OK, 0 rows affected (0.06 sec)

查看语句

mysql> show create table t_1\G;

*************************** 1. row***************************

Table: t_1

Create Table: CREATE TABLE `t_1` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

KEY`name` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

创建唯一索引

语法

create table t1 (

idint primary key,

name varchar(10),

sex ENUM(‘F’,’M’,’UN’)

uniqueindex id_in (id)

)engine=myisam character set utf8;

创建索引

mysql> create table t_2 (

-> id int,

-> name varchar(10),

-> unique index idInx (id)

-> );

Query OK, 0 rows affected (0.24 sec)

查看语句

mysql> show create table t_2\G;

*************************** 1. row***************************

Table: t_2

Create Table: CREATE TABLE `t_2` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `idInx` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

创建单列索引

语法

create table t1 (

idint primary key,

name varchar(10),

sex ENUM(‘F’,’M’,’UN’)

index name_in (name(10))

)engine=myisam character set utf8;

创建索引

mysql> create table t_3 (

-> id int,

-> name varchar(10),

-> index idinx (name(10))

-> );

Query OK, 0 rows affected (0.06 sec)

查看语句

mysql> show create table t_3\G;

*************************** 1. row***************************

Table: t_3

Create Table: CREATE TABLE `t_3` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

KEY`idinx` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

创建组合索引

语法

create table t1 (

idint not null,

name varchar(20),

age int not null,

index multi_in (id,name,age(100))

)engine=myisam character set utf8;

创建索引

mysql> create table t_4 (

-> id int,

-> name varchar(10),

-> age int,

-> index MutiIdx (id,name,age)

-> );

Query OK, 0 rows affected (0.07 sec)

插入数据

mysql> insert into t_4 values

-> (1,‘AAA‘,10),

-> (2,‘BBB‘,20),

-> (3,‘CCC‘,30),

-> (4,‘DDD‘,40),

-> (5,‘EEE‘,50);

Query OK, 5 rows affected (0.05 sec)

Records: 5 Duplicates: 0  Warnings: 0

mysql> select * from t_4;

+------+------+------+

| id  | name | age  |

+------+------+------+

|   1 | AAA  |   10 |

|   2 | BBB  |   20 |

|   3 | CCC  |   30 |

|   4 | DDD  |   40 |

|   5 | EEE  |   50 |

+------+------+------+

5 rows in set (0.00 sec)

mysql> explain select name,age from t_4where id<3\G;

*************************** 1. row***************************

id: 1

select_type: SIMPLE

table: t_4

partitions: NULL

type: range

possible_keys: MutiIdx

key: MutiIdx

key_len: 5

ref: NULL

rows: 2

filtered: 100.00

Extra: Using where; Using index

1 row in set, 1 warning (0.00 sec)

ERROR:

No query specified

mysql> explain select name,age from t_4where id<3 and age<50\G;

*************************** 1. row***************************

id: 1

select_type: SIMPLE

table: t_4

partitions: NULL

type: range

possible_keys: MutiIdx

key: MutiIdx

key_len: 5

ref: NULL

rows: 2

filtered: 33.33

Extra: Using where; Using index

1 row in set, 1 warning (0.00 sec)

ERROR:

No query specified

mysql> explain select name,age from t_4where age<50\G;

*************************** 1. row***************************

id: 1

select_type: SIMPLE

table: t_4

partitions: NULL

type: index

possible_keys: NULL

key: MutiIdx

key_len: 23

ref: NULL

rows: 5

filtered: 33.33

Extra: Using where; Using index

1 row in set, 1 warning (0.00 sec)

ERROR:

No query specified

注:组合索引查询的时候需要包含最左面列的关键字,才会使用到索引,否则不会使用到索引。

创建全文索引

语法

create table t1 (

idint not null,

name varchar(20),

age int not null,

infoTEXT,

fulltext index info_in (info)

)engine=myisam character set utf8;

创建索引

用alter语句修改和删除索引

语法

Alter table t1 add name_in (name);

Alter table t1 drop index name_in;

查看语句

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

增加索引

mysql> alter table t_5 add index nameIdx(name);

Query OK, 0 rows affected (0.04 sec)

Records: 0 Duplicates: 0  Warnings: 0

查看语句

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

KEY`nameIdx` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

增加唯一性索引

mysql> alter table t_5 add unique indexnameIdx1 (name);

Query OK, 0 rows affected (0.05 sec)

Records: 0 Duplicates: 0  Warnings: 0

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `nameIdx1` (`name`),

KEY`nameIdx` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

删除索引

mysql> alter table t_5 drop indexnameIdx;

Query OK, 0 rows affected (0.05 sec)

Records: 0 Duplicates: 0  Warnings: 0

查看

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `nameIdx1` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

用create语句修改索引

语法

Create index name_in on t1(name);

查看

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `nameIdx1` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

增加索引

mysql> create index idIdx on t_5(id);

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0  Warnings: 0

查看

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `nameIdx1` (`name`),

KEY`idIdx` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

用drop语句删除索引

语法

Drop index name_in on t1;

查看

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `nameIdx1` (`name`),

KEY`idIdx` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

删除

mysql> drop index idIdx on t_5;

Query OK, 0 rows affected (0.04 sec)

Records: 0 Duplicates: 0  Warnings: 0

查看

mysql> show create table t_5\G;

*************************** 1. row***************************

Table: t_5

Create Table: CREATE TABLE `t_5` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL,

UNIQUE KEY `nameIdx1` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

时间: 2024-12-21 22:02:08

索引的创建和删除的相关文章

MySQL索引的创建、删除和查看

MySQL索引的创建.删除和查看 此文转自http://blogold.chinaunix.net/u3/93470/showart_2001536.html 1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有3个未索引的表t1.t2.t3,分别只包含列c1.c2.c3,每个表分别含有1000行数据组成,指为1-1000的数值,查找对应值相等行的查

1Z0-051-DDL-2简单索引的创建和删除

索引具有两个功能:一是强制实施主键约束和唯一约束,二是提高性能 但是会减低DML操作性的性能. 1.1 索引的必要性 一.索引是约束机制的一部分,通过索引,可以立即(或近似立即)访问键值.如果定义主键,而主键上尚未建立索引,Oracle将自动创建一个索引.唯一约束也需要建立索引,为了提高性能,始终应在字表的外键上建立索引.索引对性能而言至关重要. 二.可以使用索引的情况是排序. 三.索引有助于提高性能的第三种情况是联接查询. 1.2 索引的类型 在OLTP系统中,尽量减少索引的数量,而在OLAP

MySQL学习笔记--索引的创建,删除

/*索引*/ /*索引设计原则 1.尽量选择唯一性索引 2.为经常需要order by,group by,distinct,union的字段设置索引 3.为常作为查询条件的字段设置索引 4.限制索引的数目 5.尽量使用数据量少的索引,索引值长,查询慢 6.尽量使用前缀来索引 7.删除不再使用的索引,或者很少使用的索引 */ /*一般来说,应该在这些列上创建索引,例如:        第一.在经常需要搜索的列上,可以加快搜索的速度:         第二.在作为主键的列上,强制该列的唯一性和组织表

MySQL(一)索引的创建和删除

索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.接下来将讲述如何创建.查看和删除索引. 索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引.组合索引,即一个索包含多个列. 执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引. 1.ALTER TABLE ALTER TA

MySQL索引创建与删除,MySQL存储引擎的配置

MySQL索引创建与删除 1.1 问题 本案例要求熟悉MySQL索引的类型及操作方法,主要练习以下任务: 普通索引.唯一索引.主键索引的创建/删除 自增主键索引的创建/删除 建立员工表yg.工资表gz,数据内容如表-1.表-2所示,设置外键实现同步更新与同步删除 表-1 员工表yg的数据 表-2 工资表gz的数据 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:索引的创建与删除 创建表的时候指定INDEX索引字段 创建库home: mysql> create database home;

mysql命令行下创建和删除索引简介

mysql命令行下创建和删除索引简介: mysql中创建索引可以使用CREATE TABLE语句,也可以用CREATE INDEX或ALTER TABLE来给表增加索引.索引的删除可以使用ALTER TABLE或DROP INDEX语句来实现. (1)使用ALTER TABLE语句创建索引.语法如下:alter table table_name add index index_name (column_list) ;alter table table_name add unique (colum

mysql_12_索引的分类_创建_删除

1 USE db_book; 2 -- 第四节:索引分类 3 -- 1.普通索引 4 -- 这类索引可以创建在任何数据类型中: 5 -- 2.唯一性索引 6 -- 使用UNIQUE参数可以设置,在创建唯一性索引时,限制该索引的值必须是唯一的; 7 -- 3.全文索引 8 -- 使用FULLTEXT参数可以设置,全文索引只能创建在CHAR,VARCHAR,TEXT类型的字段上; 9 -- 主要作用就是提高查询较大字符串类型的速度:只有MyISAM引擎支持该索引,Mysql默认引擎不支持. 10 -

创建与删除索引

索引是加速查询的主要手段,特别对于涉及多个表的查询更是如此.本节中,将介绍索引的作用.特点,以及创建和删除索引的语法. 13.4.1  使用索引优化查询 索引是高速定位数据的技术,首先通过一个演示样例来了解其含义及作用,具体的介绍请參考第14章. 1.索引演示样例 如果对于10.3节所建的表,各个表上都没有索引,数据的排列也没有规律,如表13.3所看到的. 表13.3                                                     没有索引的student

Mysql中索引的 创建,查看,删除,修改

创建索引 MySQL创建索引的语法如下: ? 1 2 3 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) 其中对应的语法变量信息如下: [UNIQUE|FULLTEXT|SPATIAL]中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引.全文索引.空间索引三种不同的索引类型.如果我们不指定任何关键字,则默认为普通索引.inde