视图与索引

博客介绍了SQL中视图和索引的相关知识。视图可隐藏表中敏感字段,具有安全及易用性,通过合法查询表达式定义,更新有一定原则。索引能加速表连接、提高查询效率,但创建维护耗时、占空间,不适合频繁增删改的表,其数据结构有b+树、位图、hash等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视图
  • 为什么需要视图
    • 有时候没有必要向用户展示完整的表的模型(所有字段信息)
    • 表中某些涉及安全,隐私或权限的字段需要对用户隐藏
    • 综上,视图安全及易于使用
  • 什么是视图
    • SQL 允许通过查询来定义“虚关系”(又称作虚表,并不会真的去建立物理存储表,所存储的只是 SQL 查询逻辑代码。类似于方法定义或函数声明,查询就是具体实现)只有在调用的时候才会去查询,且不会存储查询结果集
  • 如何定义视图
    • create view v as < query expression >
      • < query expression >可以是任何的合法查询表达式
      • v 视图名
  • 更新视图的原则
    • from 子句中只有一个数据库关系表
    • 查询中不含有 group by 或 having 子句
    • select 子句中只包含关系的属性名,不包含任何表达式、聚集或 distinct 声明(因为没法反推原始数据表的结构)
    • 任何没有出现在 select 子句中的属性可以取空值;即这些属性上没有 not null 约束,也不构成主键的一部分(要符合约束)
索引
  • 索引的优点
    • 加速表与表的 join
    • 可以避免全表扫描 ,提高查询效率
  • 索引的缺点
  1. 创建和维护索引需要花费一定的时间(需要单独建立索引表)
  2. 占用额外的物理存储空间(因为1)
  3. 不适合频繁增删改的表(同上,因为需要更新维护索引表)
  • 索引数据结构(空间换时间)
    • b+ 树
    • 位图
    • hash,由于映射关系,查询的时候可以达到 O(1)(个人推测,hash的value记录了数据的硬盘存储地址信息,待验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值