数据库:视图和索引

数据库:视图和索引目录一、视图1.什么是视图?2.为什么使用视图?3.如何使用视图?二、索引1.什么是索引?2.为什么使用索引?2.如何使用索引?(创建、删除)3.适用场景有哪些?4.注意事项有哪些?一、视图1.什么是视图?视图是一张虚拟表,并不在数据库中以存储数据值集的形式存在。在引用过程中依据基表动态生成。2.为什么使用视图?安全:有的数据是需要保密的…

大家好,又见面了,我是你们的朋友全栈君。

目录

一、视图

1.什么是视图?

2.为什么使用视图?

3.如何使用视图?

二、索引

1.什么是索引?

2.为什么使用索引?

2.如何使用索引?(创建、删除)

3.适用场景有哪些?

4.注意事项有哪些?


一、视图

1.什么是视图?

视图是一张虚拟表,并不在数据库中以存储数据值集的形式存在。在引用过程中依据基表动态生成。

2.为什么使用视图?

安全:有的数据是需要保密的,如果直接把表给出来进行操作会造成泄密,那么可以通过创建视图把相应视图的权限给出来即可保证数据的安全。

高效:复杂的连接查询,每次执行时效率比较低,可以考虑新建视图,每次从视图中获取,将会提高效率。

定制数据:将常用的字段放置在视图中。

3.如何使用视图?

3.1 创建视图

#查看10号部门所有的员工信息
create view v_emp as select * from emp where deptno=10;

3.2 查询视图

select * from v_emp;

3.3 修改视图

#将基表的ename字段修改了
update v_emp set ename='kitty' where empno=7839;
#将视图包含的deptno均修改为20,在基表中修改
update v_emp set deptno=20;
#结果集为空,基表中不存在10号部门了
select * from v_emp;
# with check option保证视图查询条件不被修改,但其他字段可以修改
create view v_emp as select * from emp where deptno=10 with check option;

3.4 删除视图

#删除视图(DDL操作)
drop view v_emp;

3.5 注意事项

  • 通过视图可以修改基表数据,但视图一般只做查询。
  • with check option关键词词用于保证视图的查询条件不被修改,但其他字段可以修改。

二、索引

1.什么是索引?

索引是供服务器快速在表中查询一行数据的数据结构,可以比作书籍的目录。mysql中的索引的默认数据结构是B-Tree。

2.为什么使用索引?

2.1 性能指标

性能从高到低依次是:

system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL,其中all表示全表扫描。一般来说,查询至少达到range级别,最好能达到ref级别。否则,sql的查询性能会很慢。

2.2 查询语句性能比较

关键词explain:查看sql执行性能

#解释计划任务
#explain:查看sql执行性能
#性能级别:const,查询1row
explain select * from emp where empno=7788;
#性能级别:all(全表扫描),查询14row
explain select * from emp where ename='scott';

代码说明:为什么第1条查询比第2条查询快这么多?第1条语句的条件字段是主键,主键自动创建索引,根据记录地址查找;而第2条语句的条件是普通字段,做的是全表扫描。

2.如何使用索引?(创建、删除)

2.1 普通索引

create index index_name on tname(fie1...);
#创建普通单列索引,多个列用逗号隔开
create index index_name on emp(ename);
#性能级别:ref,查询1row
explain select * from emp where ename='scott';
#删除索引
drop index index_name on emp;

2.2 唯一索引

与普通索引区别是指定列的数据必须是唯一的,主键、唯一约束、外键等都会自动添加索引。

#创建唯一索引,唯一约束也会添加唯一索引
create unique index index_name on tname(fie);

3.适用场景有哪些?

表数据量足够大;

增删改较少的表;

高基数列。什么意思?该列的数据大多数都不一样。

4.注意事项有哪些?

索引需要单独开辟空间进行维护,对数据进行增删改,都需要维护索引。所以索引不易添加过多;

将条件列设置索引(经常作为条件的列);

索引失效的状况:比如or关键字会导致索引失效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163058.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm2021.7激活码(JetBrains全家桶)

    (pycharm2021.7激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~M…

    2022年3月21日
    62
  • python进阶(25)协程「建议收藏」

    python进阶(25)协程「建议收藏」协程的定义协程(Coroutine),又称微线程,纤程。(协程是一种用户态的轻量级线程)作用:在执行A函数的时候,可以随时中断,去执行B函数,然后中断B函数,继续执行A函数(可以自动

    2022年8月7日
    5
  • python 用pip安装cv2(超简单的一句话)

    python 用pip安装cv2(超简单的一句话)如果你已经装好了pip,那就直接pipinstallopencv-python就可以了打个小广告~~

    2022年4月20日
    239
  • matlabinterp1函数_matlab中subs

    matlabinterp1函数_matlab中subs今天通过几个实例对matlab中的interp1插值函数进行了深入的理解,下面通过几组数据进行说明。插值法:插值法又称“内插法”,是利用函数f(x)在某区间中已知的若干点的函数值,作出适当的特定函

    2022年8月6日
    12
  • 从零开始学Android_数学从零开始要学多久

    从零开始学Android_数学从零开始要学多久1环境搭建如果可以翻墙,环境搭建不是什么大问题,如果不能翻墙,则搭建环境比较困难。首先,我们根据网上的教程安装JDK。然后安装Androidstudio,最后进行一些配置,具体可以参考如下链接:https://jingyan.baidu.com/article/36d6ed1f9031bc1bcf4883f7.html。如果是国内环境,需要配置相关的国内镜像和仓库。有条件的话还是选择VPN的方…

    2022年4月20日
    44
  • 玩转跨境电商_个人如何做跨境电商

    玩转跨境电商_个人如何做跨境电商近日日本最大二手交易平台Mercari日前对外宣布,将与阿里巴巴合作启动跨境销售。不久后,Mercari将登陆淘宝和闲鱼,消费者下单后,由电商服务平台BEENOS负责代购,随后将货物发往国内。Mercari作为日本最大二手交易平台,一直以来在亚洲范围内都久负盛名,而闲鱼作为国内首屈一指的二手电商平台,二者的联合碰撞起的全新火花,能打开跨境二手电商的新链路吗?二手与跨境,电商后意识形态的新鸾凤自流量为尊的互联网商业态势席卷之后,电商在不停演变,从最初的图书到衣物综合,再到各垂直电商、社交电商…

    2022年10月4日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号