MySQL 视图与索引

相对于2008年5.1版本加入的事务管理和分区操作,视图和存储过程在2003年的5.0版本就推出了。而索引的概念就更早了,MySQL最早的MyISAM(之前叫ISAM)就支持全文索引和树索引,而InnoDB只支持树索引,因此在查询性能方面MyISAM更胜一筹,但是InnoDB却能够提供更健全的事务管理(MyISAM是不支持的)。

一.视图​

虚拟表,没有真实的存在,而是在使用过程中依据基表动态生成。 如果修改视图的数据,那么基表也会进行修改。

MySQL磁盘data目录:

.frm 数据结构文件

.ibd:数据索引文件

视图不能独立存在,他需要依赖于表(可以使多张)

通过视图可以增删改表基表底层的数据

视图主要应用于查询,尽量不要用于增删改。

创建视图:

create view emp_view as select * from emp where deptno=10;

-- 因为条件都变了,主表deptno为10的全部变成20,而视图本身映射的是deptno为10的,所以不会查到
# 数据。
update emp_view set deptno=20;   

-- with check option :保证视图数据的安全,不允许修改视图创建条件字段。
create or replace view emp_view as select * from where deptno=10 with check 
option;

-- 视图的销毁
drop view 视图名称 

视图优点:

安全性(隐藏字段)

简化开发

数据定制化

二.索引

为了提升效率而定制的一个数据结构,需要独立的空间来维护(需要占用资源) -> 表需要进行进行删改操作。可以使用单列索引,也可以使用多列联合索引。

-- type属性为性能指标,用来查看逻辑执行计划,类似hive的执行计划
explain select * from emp; 
  
-- 性能指标
system > const > eq_ref> ref > fullytext > ref_or_null > index_merge > 
unique_subquery > index_subquery > range> all

创建索引:

create index indx_ename on emp(ename);

索引的添加采用:

采用B+树

依赖于存储引擎

索引列如何选择:

表的数据量应该是比较大的表(几千条以上),选择高基数列(这列的数据尽量是不重复的)

索引语法:单列索引,组合(多列)索引:

1) 一般索引

create index index_xxx on 表名(字段名,....);
drop index index_xxx on 表名

2) 唯一索引

create unique index index_xxx on 表名(字段名,....);
drop unique index index_xxx on 表名
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值