MySQL-事物、索引和视图

懵懂的女人 提交于 2020-03-18 13:56:23

1.视图

  • 对于复杂的语句,多次使用时,要维护是一件很麻烦的事情。
  • 解救的办法:就是定义一个视图,相当于编程语言中的封装。
  • 定义视图

            语法如下:

                    create view v_student as select * from student where name = zhangsan;

            调用:

                    select * from v_student;

 

2.事物

当一件事情需要多个sql完成时,如果其中的某条语句出错,则希望整个操作都退回。

主要作用是保证命令的完整性。

2.1事物的四大特性

  • 原子性:事物中的全部操作在数据库中是不可分割的,要么全部完成,要么都不完成。
  •  一致性:几个并行执行的任务,其执行结果必须与按照某一顺序执行的结果一致。
  • 隔离性:事物的执行不受其他事物的干扰,事物执行的结果对其他事物必须是透明的。
  • 持久性:对于已经提交的事物,系统必须保证事物对该数据库的改变不曾丢失,即使数据库出现故障。

2.2 使用事物的情况

数据被更改时,包括insert、updata、del等操作进行时使用事物。

  • 要求:表的类型必须是innodb或者bdb类型,才可以使用事物。
  • 查看表的类型:show create table students;
  • 修改表的类型:alter table 表名称 engine=innodb;

事物语句:

  • 开启:begin;
  • 提交:commit;
  •  回滚:rollback;

2.3示例

begin;

updata student set name=’wl’ where id =1;

commit;# 提交

updata student set name=’wyy’ where id =1;

collback;# 回滚

 

3.索引

在一般的数据库系统中,读写的比例一般是10:1,而且插入和更新操作很少出现性能问题,遇到最多的,最容易出现的问题还是一些查询操作,所以查询语句的优化是重中之重。当然了,在数据库中的数据很多时,查找数据会变得很慢,而索引能够提高数据库的访问性能。主键和位移索引都是索引,可以提高查询速度。

3.1选择列的数据类型

1)越小的数据越好:越好的数据类型通常在磁盘、内存和CPU缓存中需要的空间更小,处理起来也更快。

2)简单的数据类型更好:整数比字符型类型更好,处理的开销更小。

3)尽量避免null:应该指定列为not null。

3.2 索引的操作

(1)索引的分类

索引一般建立在where语句后面的查询项上,提高查询速度。索引分为单列索引和组合索引。单列索引,顾名思义就是一个索引只包含单个列,一个表可以有多个单个索引,但是这却不是组合索引。组合索引:一个索引包含单个列。

(2)查看索引

对索引的影响:or语句、范围的数据如>、<等符号。

查看索引:show index  from student;

创建索引:create index indexname on tablename(username(len),title(len));

删除索引:drop index [indexname] on tablename;

3.3 缺点

虽然索引提高了查询速度,但是对数据更新等操作会有影响,降低了更新表的速度,因为更新表时,数据库不仅要存储数据,还要存储索引。还有索引的建立会占用磁盘空间的索引文件。

3.4示例

开启时间运行监测
set profiling=1;

执行查询语句:
select * from student where name=’wl’;

查看执行时间
show profiles;

创建索引
create index names on student(name(20));

执行查询语句:
select * from student where name=’wl’;

查看执行时间
show profiles;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!