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