关闭

MySQL 索引

标签: MySQL索引
12人阅读 评论(0) 收藏 举报
分类:

   MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提供MySQL的检索速度。

   索引分单例索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

   创建索引时,你需要确保该索引是应用在SQL查询语句的条件(一般作为WHERE子句的条件)。

   实际上,索引也是一张表,该表保存了主键和索引字段,并指向实体表的记录。

   索然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT,UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

   建立索引会占用磁盘空间的索引文件。

创建索引

CREATE INDEX indexName ON mytable(username(length)); 
   如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length。

修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(columnName)
创建表的时候直接指定

CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
INDEX [indexName] (username(length))   
);  
删除索引的语法

DROP INDEX [indexName] ON mytable; 

唯一索引

索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

CREATE UNIQUE INDEX indexName ON mytable(username(length)) //创建索引
ALTER table mytable ADD UNIQUE [indexName] (username(length))//修改表结构
CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
UNIQUE [indexName] (username(length))  
);  //创建表的时候直接指定

使用ALTER 命令添加和删除索引
有四种方式来添加数据表的索引:

·ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

·ALTER TABLE tbl_name ADD UNIQUE index_name(column_list):这条语句创建索引的值必须是唯一的。

·ALTER TABLE tbl_name ADD INDEX index_name(column_list):添加普通索引,索引值可以出现多次。

·ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list):该语句指定了索引为FULLTEXT,用于全文索引。

实例

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
mysql> ALTER TABLE testalter_tbl DROP INDEX c;

使用ALTER命令添加和删除主键

    主键只能作用于一个列上,添加主键索引时,需要确保该主键默认不为空(NOT NULL)。实例如下:

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
    也可以使用ALTER命令删除主键:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
    删除主键时只需指定PRIMARY KEY,但在删除索引时,你必须知道索引名。

显示索引信息

    可以使用SHOW INDEX命令来列出表中的相关的索引信息。可以通过添加\G来格式化输出信息。

mysql> SHOW INDEX FROM table_name; \G
........

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

mysql的索引创建及使用

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 myt...
  • u011156212
  • u011156212
  • 2015-05-18 14:25
  • 5633

mysql 建立索引 唯一索引(转)

转自:http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=7917 不希望数据表中有重复记录的时候我们可以给表添加一个联合唯一索引 ...
  • mr_orange_klj
  • mr_orange_klj
  • 2015-01-16 15:33
  • 1271

mysql_建立索引的优缺点

建立索引的优缺点: 为什么要创建索引呢?         这是因为,创建索引可以大大提高系统的性能。          第一、...
  • superit401
  • superit401
  • 2016-05-01 20:36
  • 9380

mysql-常见问题,索引优化

  • 2017-11-17 13:51
  • 388KB
  • 下载

MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

  • 2015-03-27 16:23
  • 243KB
  • 下载

MySQL索引分析及优化.pdf

  • 2012-10-24 15:40
  • 74KB
  • 下载

mysql之Linux安装,重点是索引的优化笔记

  • 2017-08-02 14:28
  • 15.04MB
  • 下载

MySQL索引背后的数据结构及算法原理

  • 2017-03-13 12:31
  • 1.07MB
  • 下载

MySQL Innodb 索引原理详解

  • 2017-02-28 14:17
  • 1.30MB
  • 下载

MySQL 索引最佳实践

  • 2016-07-18 12:46
  • 658KB
  • 下载
    个人资料
    • 访问:10538次
    • 积分:2411
    • 等级:
    • 排名:第18263名
    • 原创:228篇
    • 转载:26篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档