
概述:
索引是一种排好序的 快速查找的数据结构,他帮助数据库高效的进行检索,外数据之外,数据库系统还维护这满足特定查找算法的数据结构(额外的数据空间) ,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实行高效的查找算法,这种数据结构就叫索引
索引是一种排好序的,快速查找的数据结构,他帮助数据库高效的进行检索,在数据之外,数据库还维护着满足特定查找算法的数据结构,这种结构占用额外的数据空间,这些数据结构以某种方式指向数据,所以可以在数据结构上实现高效的查找算法,这种数据结构就叫索引.
索引是一种排好序的,快速查找的数据结构,能帮助数据库实现高效的检索,在数据外,数据库还维护着满足特定高效查找的数据结构,这种数据结构指向数据,能在数据结构上实现高校查询,就叫做索引
为了提高查询效率,索引会单独生成一张表,要合理的使用索引
分类:
单值索引:一个索引只能包括一个字段
唯一索引:索引的值必须唯一,允许有空值,主键可以自动创建索引
复合索引:一个索引可以包括多个字段(存在最左特性,意思就是最左边的字段必须存在于你的查询中,多种查询方式中只要存在最左边的就成立,不存在就会造成索引失效的效果)
使用步骤:(是设计的结果)
创建索引(经常使用指定字段查询)+使用索引
create index (索引名) on 字段名
查看索引
show index from 表名
使用索引
select * from emp where 存在索引的字段名
想要查看查询中是否存在索引在查询前加 explain
possible_keys 可能用到的索引
主键自带索引,提高查询效率
复合索引存在索引失效的情况,因为最左特性
为何索引快?
优点:
索引是数据库优化
表的主键会默认创建索引
每个字段都可以被索引
大量降低数据库的IO读写成本,极大的提高了检索速度
索引事先对数据进行了排序,大大提高了查询效率
缺点:
索引也是一张表,占用空间
索引表中的内容,数据库中都有,重复资源浪费
索引的信息也需要保存
业务的不断变化也需要不断更新索引
视图:缓存了SQL语句的执行结果,当做表来执行
create view 视图名 as 查询的sql语句
索引中包含视图
使用:1.创建视图 2.使用视图
好处:简化了SQL ,相同的sql需求不必再写sql了,直接查视图
视图可以被共享,试图屏蔽了真实业务表的复杂性
坏处:
无法被优化
三种方式:
笛卡尔积语法:#把两个表的数据用逗号都拼接起来 select * from dept,emp; 通过 表名.字段名=表名=字段名,描述两个表的关系
连接查询分为三种:
内连接 inner join :取两张表的交集
左连接:left join :取左表的所有和
执行顺序,先定左表,然后拿着对应的关键条件查询右表,这样就不用全部读取了,比较高效,所以要求左表越简单越好 ,一般是小表
子查询#查询员工姓名叫jack的部门信息和员工信息
SELECt * FROM dept,emp
WHERe dept.deptno=emp.deptno #描述了两张表的关系
AND emp.ename=‘jack’;#有同名需要强调表中的字段;;没有同名就可以直接写字段
IN 的用法 格式 IN 字段名 (,)
AND 和OR 连用的话 格式 AND (字段=’ ’ OR 字段=’ ')