公用表表达式(CTE)对SQL语句执行效率的影响。

这篇博客探讨了在MySQL中使用公用表表达式(CTE)对SQL查询性能的影响。通过比较两种不同的查询方式,发现使用CTE的查询在执行时间上显著优于不使用CTE的查询,从1s多降低到仅10几毫秒。文章通过具体的源代码实例展示了CTE如何优化查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#源代码1:
select t.*, t.data_resource MAT_CLASS
from (SELECT A.data_resource, A.MAT_CODE, A.COMPANY_CODE
FROM XGIRP1.TYMIR22 A
WHERE A.COMPANY_CODE = ‘XISC’
and A.data_resource like ‘%条码打印%’
UNION
SELECT DISTINCT B.MAT_CLASS, B.MAT_CODE, B.COMPANY_CODE
FROM XGIRP1.TQMIR0A B
WHERE B.MAT_CODE != ’ ') t
WHERE t.MAT_CODE IN
(select mat_code
from (SELECT A1.data_resource, A1.MAT_CODE, A1.COMPANY_CODE
FROM XGIRP1.TYMIR22 A1
WHERE A1.COMPANY_CODE = ‘XISC’
and A1.data_resource like ‘%条码打印%’
UNION
SELECT DISTINCT B1.MAT_CLASS, B1.MAT_CODE, B1.COMPANY_CODE
FROM XGIRP1.TQMIR0A B1
WHERE B1.MAT_CODE != ’ ') t1
group by t1.mat_code
having count(t1.mat_code) > 1)
AND t.COMPANY_CODE = ‘XISC’
执行时间:service end. 1136ms elapsed.时间1s多。
#源代码2:
WITH temp AS
(SELECT A.data_resource, A.MAT_CODE, A.COMPANY_CODE
FROM XGIRP1.TYMIR22 A
WHERE A.COMPANY_CODE = ‘XISC’
and A.data_resource like ‘%条码打印%’
UNION
SELECT DISTINCT B.MAT_CLASS, B.MAT_CODE, B.COMPANY_CODE
FROM XGIRP1.TQMIR0A B
WHERE B.MAT_CODE != ’ ')

select t.*, t.data_resource MAT_CLASS
from temp t
WHERE t.MAT_CODE IN
(select mat_code
from temp t1
group by t1.mat_code
having count(t1.mat_code) > 1)
AND t.COMPANY_CODE = ‘XISC’
执行时间:service end. 14ms elapsed.时间10几毫秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值