select c.func_id 菜单ID , c.FUNC_NAME 菜单名称 , c.region_id 地市 , null 业务交付时长 , a.eoi_value 白屏率 , b.eoi_value 慢页面率 , c.eoi_value 菜单点击量 , d.eoi_value 菜单驻留时长 , e.eoi_value 菜单交互次数 , null 业务办理量 , null 业务办理成功率 , null 平均审批时长 , c.create_date 创建时间 ,'${taskid}' task_id from EOI_ALL_TJ_1007_1 a , EOI_ALL_TJ_1003_1 b , EOI_ALL_TJ_1004_1 c , EOI_ALL_TJ_1002_1 d , EOI_ALL_TJ_1000_1 e where a.func_name = b.func_name and b.func_name = c.func_name and c.func_name = d.func_name and d.func_name = e.func_name and c.create_date >= to_date(substr('20230412',0,8),'YYYYMMDD') and c.create_date < to_date(substr('20230412',0,8),'YYYYMMDD') + 1 ;对数据进行加工处理,报表从里边抽取数据,通过菜单进行关联,能帮我优化下这段代码嘛
时间: 2024-01-21 10:18:40 浏览: 62
可以考虑使用 JOIN 语句替换原有的多表连接语句,同时使用别名简化代码,如下所示:
```
SELECT c.func_id AS 菜单ID,
c.FUNC_NAME AS 菜单名称,
c.region_id AS 地市,
NULL AS 业务交付时长,
a.eoi_value AS 白屏率,
b.eoi_value AS 慢页面率,
c.eoi_value AS 菜单点击量,
d.eoi_value AS 菜单驻留时长,
e.eoi_value AS 菜单交互次数,
NULL AS 业务办理量,
NULL AS 业务办理成功率,
NULL AS 平均审批时长,
c.create_date AS 创建时间,
'${taskid}' AS task_id
FROM EOI_ALL_TJ_1007_1 a
JOIN EOI_ALL_TJ_1003_1 b ON a.func_name = b.func_name
JOIN EOI_ALL_TJ_1004_1 c ON b.func_name = c.func_name
JOIN EOI_ALL_TJ_1002_1 d ON c.func_name = d.func_name
JOIN EOI_ALL_TJ_1000_1 e ON d.func_name = e.func_name
WHERE c.create_date >= to_date(substr('20230412',0,8),'YYYYMMDD')
AND c.create_date < to_date(substr('20230412',0,8),'YYYYMMDD') + 1;
```
此外,可以考虑添加索引以优化查询性能,具体需要根据表结构和数据情况进行分析和优化。
阅读全文