select
A.ITEM_CODE,A.SERIAL_NO,B.ENG_DESC,A.STATUS,C.DESC_ENG as CurrentStatus,
dbo.f_rp_getStartingServiceDate(A.ITEM_CODE,A.SERIAL_NO) as StartingServiceDate ,
dbo.f_rp_getServingHours(A.ITEM_CODE,A.SERIAL_NO) as ServingHours,
(select count(1) from T_INVENTORY_DET where ITEM_CODE=A.ITEM_CODE and SERIAL_NO=A.SERIAL_NO ) as MaintenanceCount
from T_INVENTORY_DET as A left join T_ITEM_M as B on B.ITEM_CODE=A.ITEM_CODE
left join T_CODE_M as C on C.CODE=A.STATUS
where B.ITEM_TYPE='MAJOR'
and C.MASTER_TYPE='D'
and C.MASTER_CODE='INV_S'
通过这个查询count 假设有1000条记录。而f_rp_getStartingServiceDate和f_rp_getServingHours函数所查询表都是百万级别的数据量
f_rp_getStartingServiceDate里的代码
set @StartingServiceDate = (
select top 1 CONVERT(varchar(100), HIRE_DATE, 103)
from T_EQUIP_COLLECT t where EC_No in(
select EC_No from T_EQUIP_COLLECT_DET td where ITEM_CODE=@ITEM_CODE and CRAFT_SERIAL_NO= @SERIAL_NO
)
order by HIRE_DATE asc
)
f_rp_getServingHours里的代码类似就不发出来了,
请大侠赐教,该怎么样优化。现在执行这个时间太久基本数据库被锁死了。
sql语句优化。 数据级为百万级别
答案:1 悬赏:0
解决时间 2021-01-30 14:17
- 提问者网友:紫柔同归
- 2021-01-30 04:48
最佳答案
- 二级知识专家网友:劳资的心禁止访问
- 2021-01-30 05:54
数据优化不外乎索引,必要冗余字段,分表等。
这条sql调用了两个函数,且都查询了百万数据级别的表,建议在被检索的字段加索引。
这条sql调用了两个函数,且都查询了百万数据级别的表,建议在被检索的字段加索引。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯