select sum(t.p_totalnav) as scale,t.publish_date as date from (select fundcode,invest_manager,CAST(p_totalnav AS DECIMAL(22,4)) as p_totalnav,publish_date from app.v_jrcrm_hugo_manageasset)t where strpos(t.invest_manager,'钱亚风云')>0 group by 2 优化SQL
时间: 2024-03-29 14:34:43 浏览: 54
大家来进行SQL优化
优化思路:
1. 使用EXISTS代替子查询:将子查询转化为EXISTS语句,可以提高查询效率。
2. 使用DECIMAL代替CAST:在定义表结构的时候,可以将p_totalnav字段的类型定义为DECIMAL,避免在查询时进行类型转换。
3. 使用索引:对invest_manager字段创建索引,可以加快查询速度。
优化后的SQL如下:
SELECT SUM(t.p_totalnav) AS scale, t.publish_date AS date
FROM app.v_jrcrm_hugo_manageasset t
WHERE EXISTS (SELECT 1 FROM app.v_jrcrm_hugo_manageasset m WHERE m.fundcode = t.fundcode AND m.invest_manager LIKE '%钱亚风云%')
AND t.publish_date BETWEEN 'start_date' AND 'end_date'
GROUP BY t.publish_date;
其中,start_date和end_date为查询时间范围。如果invest_manager字段已经创建了索引,可以进一步提高查询效率。
阅读全文