赞
踩
相对于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 表名
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。