索引
- 索引是存放在schema中的一个数据库对象,虽然索引总是从属于数据表,但它也和是数据表一样属于数据库对象,创建索引唯一的作用就是加速对表的查询,索引通过使用快速路径访问方法来快速定位数据,从而减少磁盘I/O
- 索引作为数据库对象,在数据字典中独立存放,但不能独立存在,必须属于某个表
- MySQL使用information_schema数据库里的STATISTICS表来保存该数据库实例中的所有索引信息
- 索引的好处是提升查询速度,但当数据表中的记录增加删除修改时,数据库需要维护索引,因此也会有一定的系统开销,并且存储索引信息也需要一定的磁盘空间
创建索引
创建索引有两种方式:
- 自动:当在表上定义主键约束和唯一约束和外键约束的时候,系统会为该数据列自动创建对应的索引
- 手动:通过
create index...语句来创建索引
create index index_name on table (column[, column]...);
create index davieyang_test_index on davieyang_test(davieyang_name);
create index davieyang_test_index_multi on davieyang_test(first_name, last_name);
删除索引
删除索引也有两种方式:
- 自动:数据表被删除时,该表上的索引自动被删除
- 手动:通过
drop index...语句来删除指定数据表上的指定索引
drop index 索引名 on 表名
drop index davieyang_test_index on davieyang_test
有些数据库删除索引时无须指定表名,因为他们要求建立索引时,每个索引都有唯一的名字,所以无须找你定表名,例如Oracle,但MySQL只要求同一个表内的索引不能重名,所以必须指定表名
视图
视图看上去非常像一个数据表,但他不是数据表,因为他不能存储数据,视图只是一个或多个数据表中数据的逻辑显示,使用视图有几点好处:
- 可以限制对数据的访问
- 可以使复杂的查询变简单
- 提供了数据的独立性
- 提供了对相同数据的不同显示
创建视图
因为视图只是数据表中数据的逻辑显示,也就是一个查询结果,所以创建视图就是建立视图名和查询语句的关联
# 如果视图存在则使用新视图替换原有视图,如果不存在则创建视图
create or replace view 视图名
as
subquery
视图的本质就是一条被命名的SQL
create or replace view view_davieyang_test
as
select davieyang_id, davieyang_name from davieyang_test;
MySQL允许在创建视图时使用with check option子句,使用该子句创建的视图不允许修改
create or replace view view_davieyang_test
as
select davieyang_id, davieyang_name from davieyang_test with check option;
大部分数据库都采用with check option来强制不允许修改视图的数据,但Oracle采用with read only来强制不允许修改视图的数据
删除视图
drop view 视图名
drop view view_davieyang_test;
本文介绍了数据库中索引的概念及其作用,包括如何创建、使用和删除索引以提高查询效率,并探讨了视图的创建及应用优势。
3351





