MySQL索引 查看、创建、删除

1.索引类型

创建索引时,可规定索引能否包含重复值。如不包含,则索引应创建为PRIMARY KEY 或 UNIQUE 索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的组合不重复。

PRIMARY KEY 索引和 UNIQUE 索引非常类似。事实上,PRIMARY KEY 索引仅是一个具有名称 PRIMARY 的 UNIQUE 索引。这表示一个表只能包含一个 PRIMARY KEY,因为一个表中不可能具有两个同名的索引。

2.索引作用

一级索引, 简单的理解可以理解为书的目录, 目录对应到页数, 一下子就找到内容, 所以速度很快;

二级索引, 举个例子:

表:

ID User_id Someting
0 0 鼻子
1 0
2 1 头发
3 3 眼睛
   

如果我们想找 User_id=0的, 如果没有建立二级索引, 就要遍历 User_id[Map:key -> id, value -> [User_id, Something]], 算法复杂度 O(n)。 建立二级索引, 采用空间换时间的方法:

User_id id
0 0
0 1
1 2
3 3
   

Map: key -> User_id, value -> [id] 用 User_id 快速找到 id 然后再根据 id 快速定为到需要的记录。 明白了原理, 调优就会更好理解记忆, 话说索引建立的规则太多, 至今我还记不全, 原理才是不变的。

3. 创建索引

在CREATE TABLE可以创建索引,也可用 CREATE INDEX 或 ALTER TABLE 来为表增加索引。

1.ALTER TABLE

ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。

ALTER TABLE table_name ADD INDEX index_name (column1, column2, …)

ALTER TABLE table_name ADD UNIQUE (column1, column2, …)

ALTER TABLE table_name ADD PRIMARY KEY (column1, column2, …)

索引名 index_name 可选,没填的时候,MySQL根据第一个索引列赋一个名称。

2.CREATE INDEX

CREATE INDEX可对表增加普通索引或UNIQUE索引。

CREATE INDEX index_name ON table_name (column1, column2, …)

CREATE UNIQUE INDEX index_name ON table_name (column1, column2, …)

4. 删除索引

删除索引:  ALTER TABLE 或 DROP INDEX 。类似于 CREATE INDEX 语句,DROP INDEX 可以在 ALTER TABLE 内部作为一条语句处理,语法如下。

DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

其中,前两条语句是等价的,删除掉table_name中的索引index_name。

第3条语句只在删除 PRIMARY KEY 索引时使用,因为一个表只可能有一个 PRIMARY KEY 索引,因此不需要指定索引名。如果没有创建 PRIMARY KEY 索引,但表具有一个或多个 UNIQUE 索引,则 MySQL 将删除第一个 UNIQUE 索引。

如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

5.查看索引

show keys from tblname;

字段释义:

  · Table

  表名

  · Non_unique

  如果索引不能包括重复词,则为0。如果可以,则为1

  · Key_name

  索引的名称

  · Seq_in_index

  索引中的列序列号,从1开始

  · Column_name

  列名

  · Collation

  列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)

  · Cardinality

  索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大

  · Sub_part

  如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL

  · Packed

  指示关键字如何被压缩。如果没有被压缩,则为NULL

  · Null

  如果列含有NULL,则含有YES。如果没有,则该列含有NO

  · Index_type

  用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)

  · Comment

  备注

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-09 10:41:45

MySQL索引 查看、创建、删除的相关文章

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

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

mysql索引的创建

mysql索引的创建 -- 索引的创建(创建表的时候同事添加索引)create table index1(id int primary key not null,name varchar(32) not null,age int not null,intro varchar(200),unique key (name), -- 唯一索引fulltext index (intro),-- 全文索引index (age), -- 普通索引index (name,age) -- 联合索引.复合索引)e

MySQL索引的创建,查看,删除

在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引. 1.ALTER TABLE ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引. ALTER TABLE table_name ADD INDEX index_name (column_list) ALTER TABLE table_name ADD UNIQUE (column_list) ALTER TABLE table_name

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 (column_list) ;alter table ta

MySQL索引建立与删除

#添加索引alter table 表名 add index 索引名称(列名1, 列名2);alter table 表名 add index 索引名称(列名1, 列名2, 列名3);alter table 表名 add index 索引名称(列名); #删除索引drop index 索引名称 on 表名;

Oracle 唯一 索引 约束 创建 删除

http://www.blogjava.net/lukangping/articles/340683.html/*给创建bitmap index分配的内存空间参数,以加速建索引*/ show parameter create_bit; /*改变索引的存储参数*/ alter index index_name pctfree 30 storage(initial 200k next 200k); /*给索引手工分配一个分区*/ alter index index_name allocate ext

WebSphere V8.5 静默安装升级(三)-命令查看创建删除WAS概要文件

[命令查看已建的WAS概要文件]:/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -listProfiles[命令删除WAS概要文件]:方案一: 1. 找到profileRegistry.xml,在目录/opt/IBM/WebSphere/AppServer/properties里,去掉想删除的profile的配置即可. 2. 删除profileName.sh 在目录/opt/IBM/WebSphere/AppServer/propertie

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

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

MySQL索引

mysql索引  注意:创建索引的基本原则   索引要建在使用比较多的字段上   尽量不要在相同值比较多的列建立索引,比如性别.年龄等字段   对于经常进行数据存取的列不要建立索引   对于有外键引用的表,在主键和外键上建立索引   1.普通索引 索引创建的三种方式===== 主键是一种特殊索引 表已创建  ===help create index; create index ipaddr_idx on test(ipaddr); mysql> create index ipaddr_idx o