此文转自http://blogold.chinaunix.net/u3/93470/showart_2001536.html

1.索引作用

在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。

例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。

SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3

此查询结果应该为1000行,每行包含3个相等的值。在无索引的情况下处理此查询,必须寻找3个表所有的组合,以便得出与WHERE子句相配的那些行。而可能的组合数目为1000×1000×1000(十亿),显然查询将会非常慢。

如果对每个表进行索引,就能极大地加速查询进程。利用索引的查询处理如下。

(1)从表t1中选择第一行,查看此行所包含的数据。

(2)使用表t2上的索引,直接定位t2中与t1的值匹配的行。类似,利用表t3上的索引,直接定位t3中与来自t1的值匹配的行。

(3)扫描表t1的下一行并重复前面的过程,直到遍历t1中所有的行。

在此情形下,仍然对表t1执行了一个完全扫描,但能够在表t2和t3上进行索引查找直接取出这些表中的行,比未用索引时要快一百万倍。

利用索引,MySQL加速了WHERE子句满足条件行的搜索,而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度。

2.  创建索引

在执行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 ADD PRIMARY KEY (column_list)

其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。

2.CREATE INDEX

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

CREATE INDEX index_name ON table_name (column_list)

CREATE UNIQUE INDEX index_name ON table_name (column_list)

table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。

3.索引类型

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

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

下面的SQL语句对students表在sid上添加PRIMARY KEY索引。

ALTER TABLE students ADD PRIMARY KEY (sid)

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.查看索引

mysql> show index from tblname;

mysql> show keys from tblname;

mysql索引的创建和删除吗_MySQL索引的创建、删除和查看相关推荐

  1. mysql中索引创建 查看和删除语句_MySQL索引的创建、删除和查看(学习中)

    1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...

  2. mysql索引的创建与管理实验_mysql索引创建与管理笔记

    什么是索引 索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构. 其作用主要在于提高查询的速度,降低数据库系统的性能开销. 通过索引,查询数据不必读完记录的全部信息进行匹配,而是只查询索 ...

  3. mysql删除指令_mysql怎么用命令删除数据?

    在mysql中,可以使用"DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]"命令删除单个表中的数据:也可以使用"TRUNCA ...

  4. mysql使用游标删除数据库_mysql 使用游标进行删除操作的存储过程

    BEGIN DECLARE  hprocessInstanceId bigint DEFAULT 0; -- 历史流程实例id DECLARE  hprocessInstanceIdStarttime ...

  5. mysql 删除原理_MySQL权限原理及删除MySQL的匿名账户

    MySQL权限系统的工作原理 MySQL权限系统通过下面两个阶段进行认证: (1)对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接: (2)对通过认证的合法用户赋予相应的权限,用户可 ...

  6. mysql 删除顺序_mysql 添加字段、删除字段、调整字段顺序 转

    ALTER TABLE - 更改表属性 添加字段: alter table `user_movement_log` Add column GatewayId int  not null default ...

  7. 修改mysql 外删除用户_mysql添加用户、删除用户、授权、修改密码等

    mysql添加用户.删除用户.授权.修改密码等 1.新建用户. //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> mysql> i ...

  8. 远程mysql定时删除数据_mysql定时备份数据库 删除历史文件 将备份数据库传送到另外服务器...

    定时备份数据库脚本并压缩删除历史文件 1.创建备份脚本 vim   mysql-backup.sh #!/bin/bash bak=`date +%y-%m-%d-%H` tool=/usr/loca ...

  9. mysql 创建外键实例_mysql 外键创建实例

    SQL FOREIGN KEY 外键实例教程 外国的SQL关键的制约因素 外键在一个表点,主键在另一就座. 让我们说明了外国钥匙与一个例子.看看以下两个表格: 在"人"表: Las ...

最新文章

  1. Java中的门面设计模式,非常有用!
  2. RHEL4- DNS服务(六)构建DNS缓存服务器
  3. Javascript常用的设计模式详解
  4. 单基因gsea_筛到5分的核心基因以后你可以怎么做?
  5. 怎么用python编程前二n-1项的等差数列的和_python 等差数列末项计算方式
  6. 使用 Win 7 必须知道的快捷键
  7. 12.程序员的自我修养---系统调用与API
  8. HTML5游戏引擎(一)-egret引擎简介——一个开源免费的游戏框架
  9. vue2.x使用Relation Graph 人物关系图谱
  10. 记一次Windows 无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。 (代码 39)
  11. 微信小程序云开发之实时监听数据库某集合数据条数
  12. SIM卡APN选择说明
  13. 2022年毕业生求职找工作青睐哪个行业?
  14. TensorFlow学习笔记——《TensorFlow技术解析与实战》
  15. python二元函数如何编写,Nelder_Mead算法的简介和用作求解二维函数最小值的Python实现...
  16. 华为机试—拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)
  17. 《微机原理及应用》 试题
  18. 历届奥斯卡最佳影片(1928-2003)
  19. 《吴军 阅读与习作讲义》 序和第3章 日常实用写作
  20. log4j2 自动删除过期日志文件配置及实现原理解析

热门文章

  1. Fushsia:一次对操作系统的重构
  2. ASoC Machine驱动代码框架图
  3. C++初始化参数列表对成员函数初始化
  4. 快捷键查看Emacs源码
  5. typescript之http请求
  6. c++ string分割字符串split_Java字符串到数组的转换最后放大招
  7. 交通银行软件中心编制_智能运维国家标准编制启动会在京举行 云智慧参与标准制定...
  8. 2021年南阳市五中高考成绩查询,南阳市“赫赫有名”的五大高中,2020年高考成绩一目了然!...
  9. matlab积分作图速度慢,MATLAB 多个积分和画图的问题,一直画不出来。
  10. python中find函数的使用方法_Python教程-String 字符串使用教程