手把手教你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`;



七: 总结

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



相关文章推荐

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

阅读目录   创建索引   增量添加索引   删除索引   更新索引   通过索引查询关键字   全部代码   参考资料 前言   搞检索的,应该多少都会了解Luce...

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

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

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

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

手把手教你入门MySQL零基础入门教程!

视频教程:Java七大外企经典面试套路之基础篇   Java是Sun公司推出的一种编程语言。它是一种通过解释方式来执行的语言,语法规则和C++类似。同时,Java也是一种跨平台的程序设计语言。   本...

手把手教你连接mysql数据库

数据库是我们在开发过程中,经常需要使用的,Java开发中用JDBC连接数据库非常的方便快捷, JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL...

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

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

手把手教你mysql(十七)对Table操作的补充

手把手教你mysql(十七)对Table操作的补充   一: 前言 今天在整理文章的时候,发现第三讲有关Table讲的比较少,所以补充一下。   二: 补充 ALTER [IGNORE]...

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

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

手把手教你在ubuntu上安装apache和mysql和php

  • guaikai
  • guaikai
  • 2011年10月26日 01:08
  • 12443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:手把手教你mysql(十)索引
举报原因:
原因补充:

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