一、索引的概念
数据库中的索引与书籍中的目录类似
- 在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息
- 书中的目录是一个词语列表,其中表明了包含各个词的页码
数据库索引 - 在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据
- 数据库中的索引是某个表中一列或者若干列值得集合,以及物理标识这些值得数据页的逻辑指针清单
索引优点:可以快速找到数据
缺点:占用硬盘资源
二、索引的作用 - 设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率
- 特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍
- 可以降低数据库的IO读写成本,并且索引还可以降低数据库的排序成本
- 通过创建唯一性索引保证数据表数据的唯一性
- 可以加快表与表之间的连接
- 在使用分组和排序时,可大大减少分组和排序时间
三、索引的分类
普通索引 - 这是最基本的索引类型,而且它没有唯一性之类的限制
唯一性索引 - 这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一
- 唯一性索引允许为空,但是只能有一次为空
主键 - 主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”
全文索引 - MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建
单列索引与多列索引 - 索引可以是单列上创建的索引,也可以是在多列上创建的索引
四、创建索引的原则依据 - 表的主键、外键必须有索引
- 数据量超过300行的表应该有索引
- 经常与其他表进行连接的表,在连接字段(外键)上应该建立索引
- 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引
- 索引应该建在选择性高的字段上
- 索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引
- 针对大的文本字段甚至超长字段,建立全文索引,fulltext
- 唯一性太差的字段不适合建立索引
- 更新太频繁的字段不适合创建索引
五、创建索引的方法 - 根据企业需求选择了合适的索引之后,可使用CREATE INDEX创建索引
- CREATE INDEX加上各个索引关键字便可创建各个类型的索引
实操过程
1.创建普通索引
删除索引
2.创建唯一索引
删除索引
“alter table”创建唯一索引
还有一种方式就是在创建表的时候,就定义索引。
创建hobby表
给hobby表添加数据
将两张表关联在一起
这就是典型的多表相连查询
避免冗余的代码可以为表取别名
视图概述
是一张虚拟的表,数据不存在视图中,只是真实表的映射数据。利用条件筛选、分组、排序等产生出一个结果集,保存在内存中,并且做成持久化保存。(只保存映射)
视图占资源少,相当于软连接,快捷方式
真实表中数据发生变化,视图也会随之发生相应的变化。create view 视图名称 as 查询语句(select id,name,age) from 表名 where(条件) id=1 or id=5;
视图的作用:可以根据不同的用户,创建不同的视图。根据权限查看不同的视图;加强安全性;方便sql操作。
实操
创建视图
查看视图
存储过程概述
存储过程:存储过程多用于软件开发方向
防止代码在网络传输过程中被截获,做了安全性保障
原始状态:代码中需要嵌入sql语句:通过连接驱动(java就是jdbc)————把sql语句作为参数,传递给mysql数据库进行执行。
存储过程是写在数据库中,并不是程序中。
程序是通过调用存储过程名称去触发操作,(类似shell中的函数),
优点:代码量优化,减少代码量,
传输安全,隐藏sql语句
网络优化。
来源:51CTO
作者:wx5d8ab22a0be5a
链接:https://blog.51cto.com/14557905/2465076