mysql视图合并_MySQL视图(合并多表数据)引发的严重性
mysql语句多表查询能问题
如何判断thinkphp框架问题背景:
徐州少儿编程培训机构⼀、客户环境连续多次出现性能问题,系统登⼊异常,数据库CPU告警。
处理过程:
1>协助排查数据库性能问题时发现如下两个较频繁的SQL导致严重的性能问题(均使⽤了视图合并多表数据):
1 1. SELECT nodename FROM view_name1 WHERE id = xxx;
2
3 2. SELECT a.id rid,accounttype,belongto,resourceId,belongtoshow FROM view_name2 a
4 LEFT JOIN tablename1 b
5 ON a. col1= b.col1
6 l1> 0 ;
2> 上⾯两个SQL使⽤到了视图(视图通过union all合并了两张表的数据)。下⾯以t001和t002为例分别给出直接查询原表和使⽤视图查询的执⾏计划对⽐
(其中t001和t002表中id列均有索引):直接查询原表后对结果进⾏合并:
托德 斯坦恩3>通过视图进⾏查询:
1 create view t_view as
2 select * from t001
3 union allnode软件有什么用
4 select * from t002
汉字转换代码在线转换4> 对⽐执⾏计划可以发现,使⽤视图进⾏数据union all会导致索引失效,使⽤了全表扫描的⽅式进⾏数据检索,在并发⾼的情况下,
占⽤较多的磁盘IO,严重消耗数据库的CPU和IO资源,影响到整体的数据库性能,现阶段已发现较多的这种使⽤视图的代码,应避免使⽤视图,采⽤分开查询各表的⽅式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论