Mysql 临时表 视图

参考

https://www.jianshu.com/p/01b9f028d9c7

临时表的特性

  • 临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间,也可以在当前连接未关闭时,手动删除临时表。
  • 不同连接可以各自创建名字一样的临时表,不会相互冲突,这点不同于 Memory的引擎表
  • 你应该测试临时表看看它们是否真的比对大量数据库运行查询快。如果数据很好地索引,临时表可能一点不快。
  • 临时表默认的存储引擎是Innodb,数据存储在磁盘里面,且不会使用索引,即使该列在原表中有索引也不会使用

使用场景:临时表主要用于对大数据量的表上作一个子集,提高查询效率。普通临时表,从大表中捞取部分的数据,可以在一个连接内重复使用,提速

CREATE TEMPORARY TABLE user_tem as select * from user where id<200;
DROP TEMPORARY TABLE IF EXISTS temp_tb;

视图

实现视图,优化器有2种选择:临时表或者合并算法(MERGE),这是由生成视图的SQL决定的

视图本身并不存储数据,只是存储了一段待执行的sql语句而已,查询视图的时候,仍然会访问原表去查询,所以查询性能上并不能提升,更多的是简化Sql的复杂性、安全控制的考虑。如果提升性能的话,临时表可能是更好的选择。

视图的优点:

  1. 视图可以简化应用上层的操作,让应用更专注于其所关心的数据。把一个多表关联的复杂SQL封装成一个view,直接查询view里面的字段即可,不再需要写一坨sql了。
  2. 其次,视图能够对敏感数据提供安全保护,比如:对不同的用户定义不同的视图,可以使敏感数据不出现在不应该看到这些数据的用户视图上;也可以使用视图实现基于列的权限控制,而不需要真正的在数据库中创建列权限。
  3. 再者,视图可以方便系统运维,比如:在重构schema的时候使用视图,使得在修改视图底层表结构的时候,应用代码还可以继续运行不报错。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,966评论 0 9
  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的。 2.排...
    阿休阅读 10,146评论 0 37
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,177评论 2 89
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 10,179评论 0 30
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,393评论 5 116

友情链接更多精彩内容