sql语句查询的表太多,数据太大,影响查询效率 使用视图

sql语句查询的表太多,数据太大,影响查询效率,这时我们可以使用视图。

例如:

SELECT
	sfmc,
	Ksh,
	Zkzh,
	Xm,
	xbmc,
	Csny,
	zzmmmc,
	mzmc,
	kslbmc,
	bylbmc,
	Zxdm,
	Zxmc,
	wyyzmc,
	kstz,
	dqmc,
	Jtdz,
	Yzbm,
	Lxdh,
	Wyks,
	kslxmc,
	sjr,
	Wytl,
	pcmc,
	klmc,
	Cj,
	Tzcj,
	Tdcj,
	Zgf,
	Yxdrcj,
	Lqzy,
	Zyhg,
	Tjhg,
	Lqfs,
	Kszt,
	a1.zymc,
	a2.zymc,
	a3.zymc,
	a4.zymc,
	a5.zymc,
	a6.zymc,
	Zyzytj,
	dxtj,
	zysxdm1,
	zysxdm2,
	zysxdm3,
	zysxdm4,
	zysxdm5,
	zysxdm6,
	tjjlmc,
	jhlbmc,
	xkkm,
	zjlxmc,
	zjhm,
	lxsj,
	hjlbmc,
	czlbmc,
	Gkcjyw,
	Gkcjsx,
	Gkcjwy,
	Gkcjwl,
	Gkcjhx,
	Gkcjsw,
	Gkcjzz,
	Gkcjls,
	Gkcjdl,
	Gkcjjs,
	Gkcjywfj,
	Gkcjsxfj,
	Gkcjzhf,
	Gkcjwlxc,
	Gkcjhxxc,
	Gkcjswxc,
	Gkcjzzxc,
	Gkcjlsxc,
	Gkcjdlxc,
	Bjdh,
	Xh,
	Kstc,
	zytjfc,
	Ksjlhcf,
	zsyj,
	Bz
FROM
	 v_lqxsxxk_cur
LEFT JOIN td_sfdm ON v_lqxsxxk_cur.sfdm = td_sfdm.sfDm
LEFT JOIN td_xbdm ON v_lqxsxxk_cur.Xbdm = td_xbdm.xbdm
LEFT JOIN td_zzmmdm ON v_lqxsxxk_cur.Zzmmdm = td_zzmmdm.zzmmDm
LEFT JOIN td_mzdm ON v_lqxsxxk_cur.Mzdm = td_mzdm.mzdm
LEFT JOIN td_kslbdm ON v_lqxsxxk_cur.kslbdm = td_kslbdm.kslbdm
LEFT JOIN td_bylbdm ON v_lqxsxxk_cur.Bylbdm = td_bylbdm.bylbdm
LEFT JOIN td_wyyzdm ON v_lqxsxxk_cur.Wyyzdm = td_wyyzdm.wyyzdm
LEFT JOIN td_dqdm ON v_lqxsxxk_cur.Dqdm = td_dqdm.dqdm
LEFT JOIN td_kslxdm ON v_lqxsxxk_cur.Kslxdm = td_kslxdm.kslxdm
LEFT JOIN td_pcdm ON v_lqxsxxk_cur.Pcdm = td_pcdm.pcdm
LEFT JOIN td_kldm ON v_lqxsxxk_cur.Kldm = td_kldm.kldm
LEFT JOIN v_td_zydm_cur as a1 ON v_lqxsxxk_cur.Zydh1 = a1.ZYDH 
LEFT JOIN v_td_zydm_cur as a2 ON v_lqxsxxk_cur.Zydh2 = a2.ZYDH 
LEFT JOIN v_td_zydm_cur as a3 ON v_lqxsxxk_cur.Zydh3 = a3.ZYDH 
LEFT JOIN v_td_zydm_cur as a4 ON v_lqxsxxk_cur.Zydh4 = a4.ZYDH 
LEFT JOIN v_td_zydm_cur as a5 ON v_lqxsxxk_cur.Zydh5 = a5.ZYDH 
LEFT JOIN v_td_zydm_cur as a6 ON v_lqxsxxk_cur.Zydh6 = a6.ZYDH 
LEFT JOIN td_tjjldm ON v_lqxsxxk_cur.tjjldm = td_tjjldm.tjjldm
LEFT JOIN td_jhlbdm ON v_lqxsxxk_cur.jhlbdm = td_jhlbdm.jhlbdm
LEFT JOIN td_zjlxdm ON v_lqxsxxk_cur.zjlxdm = td_zjlxdm.zjlxdm
LEFT JOIN td_hjlbdm ON v_lqxsxxk_cur.hjlbdm = td_hjlbdm.hjlbdm
LEFT JOIN td_czlbdm ON v_lqxsxxk_cur.czlbdm = td_czlbdm.czlbdm
ORDER BY
	 Xh

对于上面这种左连接的表格太多,表格中的数据过大的情况,我们使用的是视图来解决效率的问题。

其中使用了两个视图,一个是动态视图,一个是临时的固定视图。

create or REPLACE  VIEW v_lqxsxxk_cur 
AS 
SELECT * FROM 	t_lqxsxxk
WHERE t_lqxsxxk.year = year(now())

对于最上面的select语句中的v_lqxsxxk_cur,我们使用的是视图。

Create or replace ALGORITHM=temptable view v_td_zydm_cur
AS
select *
from td_zydm
where year=year(now())

对于最上面的select语句中的v_td_zydm_cur,我们仍然使用视图。temptable表示我们将v_td_zydm_cur中的数据放入临时表中,需要的时候直接调用视图名来使用数据而不需要重新select,减少了一大半的查询时间,大大提高了查询的效率。


猜你喜欢

转载自blog.csdn.net/camillect/article/details/80904188