MySQL索引和视图

 什么是索引

  1. 索引可以提升查询速度,会影响where条件查询(where xxx=''),order by(order byyyy)排序
  2. 索引是针对字段的,需要添加到字段上
  3. 索引在大量数据场景下效果明显

  • 索引的优点

1. 大大的提高查询速度

2. 可以显著的减少查询和排序的时间。

  • 索引的缺点

当对表中的数据进行增加,修改,删除的时候,索引要同时进行维护,数据量越大维护时

间越长

主键索引 (PRIMARY KEY)

一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。

添加主键的时候会自动创建主键索引,主键索引是一种唯一性索引

根据主键进行where条件查询,效率高

唯一索引(UNIQUE)(了解)

特点: 索引列的所有值都只能出现一次, 必须唯一.

唯一索引可以保证数据记录的唯一性。

事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免

数据出现重复

使用create语句创建: 在已有的表上创建索引

create unique index 索引名 on 表名(列名(长度)) 

create unique index index_dname on test_index(dname); 

#插入数据时,dname重复会报错

普通索引 (NORMAL INDEX)

普通索引的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件

(WHERE column=)或排序条件(ORDER BY column)中的数据列创建索引。

普通索引对数据没有唯一、非空的强制要求

#在已有的表上创建索引

create index 

索引名 on 表名(列名[长度]) 

#修改表结构添加索引,test_index 表名,dname_indx索引名

alter table test_index add index dname_indx(dname);

删除索引

由于索引会占用一定的磁盘空间,因此,为了避免影响数据库的性能,应该及时删除不再

使用的索引

#删除  test_index 表中名为  dname_indx 的普通索引

ALTER TABLE test_index DROP INDEX dname_indx;

什么是视图

1. 视图是一种虚拟表。

2. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。

3. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句. 

4. 视图向用户提供基表数据的另一种表现形式。

视图的作用

  • 权限控制时可以使用。  比如,某几个列可以运行用户查询,其他列不允许,可以开通视图 查询特定的列, 起到权限控制的作用
  • 简化复杂的多表查询。

    视图 本身就是一条查询SQL。我们可以将一次复杂的查询构建成一张视图, 用户只要查询视图就可以获取想要得到的信息(不需要再编写复杂的SQL)视图主要就是为了简化多表的查询。

 在一个完成的表之前加上‘creat view 任起的视图名 as ‘,则就成了视图,用’select * from 任起的视图名 ‘就能查出表(把原来的表变成了视图,视图是原来表的外包装)。

creat view ut_view as select user_name,piece from user_trade;

select * from ut_view;就可以给别人仅看user_name和piece两列。user_trade表名,ut_view视图名。

#查询各个分类之下的商品平均价格
SELECT
	c.cname,
	avg( p.price ) 
FROM
	products p
	LEFT JOIN category C ON p.category_id = c.cid 
GROUP BY
	c.cname

#创造视图,将左外链接两张表变成一张视图,需要字段直接从视图调取
CREATE VIEW category_products_view as 
SELECT * FROM products p LEFT JOIN category C ON p.category_id = c.cid 

#取c.cname,avg( p.price )字段,简化后的代码

SELECT
	c.cname,
	avg( p.price ) 
FROM
category_products_view
GROUP BY
	c.cname

#等于就是把关联查询变成视图简化了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值