sql 查询速度比较原创
11人赞赏了该文章
910次浏览
编辑于2020年08月12日 16:04:18
简略需求是 查询某段时间的生产订单数据,但是要过滤掉其中物料基础资料中【产品经理】为空的数据,这个字段是多选基础资料字段,字段表为T_MA_PMIds; 为了列表显示,另外配备了一个文本字段 F_CPJL,存储多选基础资料里的值。为过滤该字段不为空的数据想到如下两种方案:
方案一:exists
SELECT * FROM dbo.T_PRD_MO MO
LEFT JOIN dbo.T_PRD_MOENTRY MOE ON MO.FID = MOE.FID
WHERE EXISTS (SELECT * FROM dbo.T_MA_PMIds PM WHERE PM.FMATERIALID = MOE.FMATERIALID)
方案二:联查物料表,判断文本数据是否有值
SELECT * FROM dbo.T_PRD_MO MO
LEFT JOIN dbo.T_PRD_MOENTRY MOE ON MO.FID = MOE.FID
LEFT JOIN dbo.T_BD_MATERIAL MA ON MA.FMATERIALID = MOE.FMATERIALID
WHERE MA.F_CPJL IS NOT NULL AND MA.F_CPJL <> ''
最开始有针对生产订单的日期过滤条件,数据量较少,两种方案查询数据库显示速度都是1s,但是后面为了测试SQL速度,去掉日期过滤,查询系统所有数据,这时方案1速度要优于方案2。
赞 11
11人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0