手把手教你mysql(十)索引
手把手教你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`;
七: 总结
今天为大家带来了索引的相关内容,大家好好练习消化下,下节为大家带来视图的相关内容,谢谢大家!
相关文章
- 【MySQL】Could not initialize master info structure
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- 谈Mysql索引
- Mysql一个非常有用的内置函数今天碰到要把MySQL数据库中的varchar转换成date类型进
- [Docker] Integrate a MySQL Docker Container Into an Application
- 数据库查询优化——Mysql索引
- Centos 6.5 实战-MySQL定时增量备份(2)
- MySQL普通索引与唯一索引__mysql中唯一索引和普通索引的用途及区别
- 【收藏】windows下 Mysql 错误 Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist
- Hadoop sqoop从MySQL导入数据到HDFS
- MySQL数据库普通索引
- centos mysql忘记密码找回(仅限mysql5.7)
- mysql中IN和EXITS效率
- MySQL Study之--Mysql无法启动“mysql.host”
- 第37讲:MySQL索引结构之B-Tree和B+Tree数据结构的概念
- CentOS安装mysql*.rpm提示conflicts with file from package的解决的方法
- MySQL还能这样玩---第三篇之索引也可以如此easy
- MySQL复习资料(五)——MySQL-索引
- MySQL_02_InnoDB存储引擎默认使用B+树索引
- MySQL-索引