手把手教你mysql(十)索引

原创 2013年12月02日 19:18:58

手把手教你mysql(十)索引

 

一:索引的引入

索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度。

类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的书,如果没有目录,你想要知道指定的内容,必须要1页1页翻过去,是不是很浪费时间?

 

二:索引的优缺点

优点:提高查询数据的速度。

缺点:创建和维护索引的时间增加了。

 

三: 索引实际应用

T_teacher表中有100000条数据,是我利用Hibernate插的,大家可以自己用jdbc插一下或者用后面的知识创建一个存储过程来插,感兴趣的可以先百度预习下。

 

Mysql>Select count(*) from t_teacher;

Mysql>Select * from t_teacher where name=’老师99999’; #我这的速度是79毫秒,这边用name不能用id,因为id是主键

Mysql>CREATE INDEX `index_name` ON `t_teacher`(`name`);#在name列上创建索引

Mysql>Select * from t_teacher where name=’老师99999’;#再次查找,速度几乎是0毫秒,可见加了索引的速度是多么的快.

 

四:索引分类

1: 普通索引(常用)

这类索引可以创建在任何数据类型中。

 

2: 唯一性索引(常用)

使用UNIQUE 参数可以设置,在创建唯一性索引时,限制该索引的值必须是唯一的,主键默认就是唯一的。

 

3: 全文索引

使用FULLTEXT 参数可以设置,全文索引只能创建在CHAR,VARCHAR,TEXT 类型的字段上。主要作用就是提高查询较大字符串类型的速度;只有MyISAM 引擎支持该索引,Mysql 默认引擎不支持。

 

4: 单列索引

在表中可以给单个字段创建索引,单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。

 

5: 多列索引

多列索引是在表的多个字段上创建一个索引。

 

6: 空间索引

使用SPATIAL 参数可以设置空间索引。空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率;只有MyISAM 引擎支持该索引,Mysql 默认引擎不支持。

 

五:创建索引

5.1 创建表的时候创建索引

CREATE TABLE 表名(属性名数据类型[完整性约束条件],

属性名数据类型[完整性约束条件],

....

属性名数据类型

[UNIQUE | FULLTEXT | SPATIAL ] INDEX| KEY

[别名] (属性名1 [(长度)] [ASC | DESC])

);




 这边没有指定索引的名字,使用mysql默认的索引名

 

5.2 在已经存在的表上创建索引

CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名

ON 表名(属性名[(长度)] [ ASC | DESC]);

Mysql>CREATE TABLE `t_test2`(

id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(30),

PASSWORD VARCHAR(10)

);

Mysql>CREATE INDEX `index_username` ON `t_test2`(`username`);




5.3 用ALTER TABLE 语句来创建索引

ALTER TABLE 表名ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX

索引名(属性名[(长度)] [ ASC | DESC]);

Mysql>ALTER TABLE `t_test2`

ADD UNIQUE INDEX `index_password`(`password`);


六: 删除索引

DROP INDEX 索引名ON 表名;

Mysql>DROP INDEX `index_username` ON `t_test2`;



七: 总结

今天为大家带来了索引的相关内容,大家好好练习消化下,下节为大家带来视图的相关内容,谢谢大家!奋斗



3D游戏引擎技术架构设计

市面上目前流行最广的游戏引擎,在2D领域是Cocos2d引擎,在3D领域是Unity3D。这二者分别占领2D游戏开发市场和3D游戏开发市场,虽然虚幻4也开始发力,引擎代码开源。但是由于它是C++编写的...
  • jxw167
  • jxw167
  • 2016年12月17日 13:25
  • 2162

Unity3D新手教学,让你十二小时,从入门到掌握!(一)

unity入门教学,新手教学,新手到大神的教学。。。
  • Aries_H
  • Aries_H
  • 2015年08月06日 01:14
  • 11988

手把手教你mysql(十三)mysql常用函数

手把手教你mysql(十三)mysql常用函数   一: 前言 Mysql>CREATE DATABASE IF NOT EXISTS `db_test` DEFAULT CHARSET gbk...
  • a672489861
  • a672489861
  • 2013年12月15日 09:08
  • 1315

树莓派(Raspberry Pi)实战指南 手把手教你掌握100个精彩案例_PDF电子书下载 带索引书签目录_柯博文编著

  • 2017年11月13日 15:08
  • 92.6MB
  • 下载

【手把手教你全文检索】Lucene索引的【增、删、改、查】

前言   搞检索的,应该多少都会了解Lucene一些,它开源而且简单上手,官方API足够编写些小DEMO。并且根据倒排索引,实现快速检索。本文就简单的实现增量添加索引,删除索引,通过关键字查询,...
  • shuyun123456789
  • shuyun123456789
  • 2017年01月16日 21:47
  • 495

【手把手教你全文检索】Lucene索引的【增、删、改、查】

阅读目录   创建索引   增量添加索引   删除索引   更新索引   通过索引查询关键字   全部代码   参考资料 前言   搞检索的,应该多少都会了解Luce...
  • u014209975
  • u014209975
  • 2016年01月15日 19:58
  • 351

手把手教你mysql移植到ARM开发板

  • 2014年01月10日 13:25
  • 16KB
  • 下载

手把手教你在64位Win7系统中配置Apache+Mysql+PHP环境

B/S架构当下很流行,因为B/S架构有众多优点,例如:用户只需有浏览器就可使用,维护升级都比较方便,跨平台,等等。本文就讲讲Windows+Apache+PHP+Mysql的开发环境如何配置。 ...
  • binyao02123202
  • binyao02123202
  • 2013年07月20日 11:48
  • 7453

手把手教你mysql(十六)数据备份与还原

一: 数据备份 备份数据可以保证数据库中数据的安全,数据库管理员需要定期的进行数据库备份,防止操作失误或者人为破坏。 1.1 使用mysqldump 命令备份 mysqldump -u user...
  • a672489861
  • a672489861
  • 2014年01月18日 08:56
  • 1298

手把手教你在centos下编译安装配置高性能web服务器环境nginx+php(fast-cgi)+mysql等/适合小内存vps使用

本文为实战操作过程的全程记录,采用一台新创建的linode vps(512M内存)环境,操作系统采用centos 6.2,以从源码编译的方式安装配置nginx, php(fast-cgi模式)we...
  • wackycrazy
  • wackycrazy
  • 2015年07月21日 21:13
  • 632
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:手把手教你mysql(十)索引
举报原因:
原因补充:

(最多只允许输入30个字)