栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

视图索引优化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

视图索引优化

项目中建了一个视图,用到了子查询,类似:

SELECt
	a.id,
	a.name,(
	SELECT
		SUM( b.amount ) 
	FROM
		( `b` JOIN `c` ) 
	WHERe
		b.pre_id = c.id 
		AND b.id = a.id 
	) AS `total_amount` 
FROM
	a 
WHERe
	a.status=1
GROUP BY
	a.name 
ORDER BY
	a.id DESC;

视图查询比较慢,查询一次要3s,以为是视图算法的问题,修改视图算法为MERGE但不生效,因为建立视图用到了GROUP BY,所以算法修改不生效,依然是UNDEFINED。

explain分析,发现视图SQL虽然用到一些索引,但也有一个表是全表扫描,并且采取了临时表查询,所以慢。

继续观察视图SQL,发现子查询b表跟c表用了关联查询,此时b表的pre_id字段是没有建立索引的,尝试着给b.pre_id字段建立索引,接着再explain分析视图SQL,发现都用到了索引查询,查询达到了毫秒级。

接口查询时间发生变化:

 

结语:优化视图可以尝试分析视图的SQL,看看哪些字段是关联查询的,给它建立索引说不定就出现奇迹了呢。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318213.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号