MySQL索引和视图
一,什么是索引
索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。
二,索引的优缺点
优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;
劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表;
三,索引的分类
1,普通索引:用表中的普通列构建的索引,没有任何限制
CREATE INDEX 索引名 ON 表名(列段名)#为该表那个列段设置索引;
2,全文索引:使用FULLTEXT参数可以设置,全文索引只能创建在CHAR,VARCHAR,TEXT类型的字段上。主要作用是提高查询较大字符串类型的速度;
ALTER TABLE 表 ADD FULLTEXT 索引 (索引列段,…);
3,组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
在使用查询的时候遵循 mysql 组合索引的 “最左前缀”,即索引 where 时的条件要按照建立索引的时候字段的排列方式。
CREATE INDEX 索引 ON 表(列段一,列段二,…);
4, 主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
创建或设置主键的时候,mysql会自动添加bai一个与主键对应的唯一索引,不需要再du做额外的添加。
5,唯一索引:与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
CREATE UNIQUE INDEX 索引 ON 表(需设置的列段) ;
====================================================
一,什么是视图
视图像一张虚拟表,从一个表或多个表中导出来的表(类似共性抽取),作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全
二,视图的优缺点
优点
简单化,数据所见即所得
安全性,用户只能查询或修改他们所能见到得到的数据
逻辑独立性,可以屏蔽真实表结构变化带来的影响
缺点
性能相对较差,简单的查询也会变得稍显复杂
修改不方便,特变是复杂的聚合视图基本无法修改
三,视图的创建
假如当三张表需要频繁使用多表连接查询时可以把它们抽取预编译成一张视图
这样当后面在需要使用这三张表时使用它们的视图即可
create VIEW 视图名
as
SELECT
查询列表
FROM
表一
JOIN
表二
JOIN
表三
on
等值连接
and
等值连接
三,视图的修改与删除
修改
create or replace view 视图名
as
查询语句;
(查询与上面创建的查询一样,用新的重新覆盖原有的视图)
删除
语法:drop view 视图名,视图名,…;(可以同时删除多个视图)
四,其它视图的操作
查看视图
DESC 视图名;
或
SHOW CREATE VIEW 视图名;
视图的更新(DML操作语法一样操作)
只不过具备以下特点的视图不允许更新
包含以下关键字的sql语句:分组函数、distinct(去重)、group by(分组)、having(分组后的筛选)、union(用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。)或者union all(不会消去重复)
数据库备份
上一篇: 在Word2007中显示可读性统计信息