今天心血来潮想尝试下视图的知识,之前早就听说过这个名字,只不过碍于对未知的恐惧,或者是未知的挑战性,总是没有迈出学习视图的这一步,然后查阅了相关资料,发现视图其实还是蛮好玩的,在我工作的实际业务中,经常涉及到3,4张表关联的大数据分析查询,很多时候没办法进行优化,但是学了视图之后,突然灵机一动,想到是不是可以用这个来解决多表联查的一些优化呢,尤其是物资系统,7、8张表联查,效率是非常慢的,废话不多说,解释了原理,接下来看看如何使用。
一、创建
语法:
用户表(users) 职位表(depts) 组织表(orgs)
id name dept_id id name org_id id name
用户表关联职位id,职位表关联组织id,现在知道了用户的id,需要查出该用户属于哪个组织,就需要如下sql:
select o.name as org_name
from users as u
left join depts as d on u.dept_id = d.id
left join orgs as o on d.org_id = o.id
每次都需要连接3张表才能找到该组织,如果用视图来解决这个问题的话,就可以这样:
create view org_info as (select u.id as user_id,d.id as dept_id,o.id as org_id,o.name as org_name from users as u
left join depts as d on u.dept_id = d.id
left join orgs as o on d.org_id = o.id)
创建好视图之后,以后每次要完成上述需求,只需要对视图进行查询:
select org_name from org_info where user_id = 1
这样就完成了,是不是很简单!