存储过程中用游标循环判断非常慢(提问中含业务需求)
时间:2011-12-12
来源:互联网
从表A中取得电话字段到表B中的三个电话字段去匹配,只要表B中有一个电话匹配,即输出该条数据,如果不匹配到表C中的三个电话字段去匹配,只要有一个电话匹配,即输出该条数据
以表A中电话循环。
※电话字段不是表中的主键
我有存储过程,利用游标去做判断输出,但是速度太慢,请大家指点下。
作者: iamheyjudy 发布时间: 2011-12-12
SELECT * FROM A WHERE EXISTS( SELECT 1 FROM B WHERE B.PHONE1=A.PHONE OR B.PHONE2=A.PHONE OR B.PHONE3=A.PHONE ) OR EXISTS( SELECT 1 FROM C WHERE C.PHONE1=C.PHONE OR C.PHONE2=A.PHONE OR C.PHONE3=A.PHONE )
作者: guguda2008 发布时间: 2011-12-12
select * from A where exists(select 1 from b where a.tel=b.tel1 or a.tel=b.tel2 or a.tel=b.tel3) union all select * from A where not exists(select 1 from b where a.tel=b.tel1 or a.tel=b.tel2 or a.tel=b.tel3) and exists(select 1 from c where a.tel=c.tel1 or a.tel=c.tel2 or a.tel=c.tel3)
作者: duoxu1983 发布时间: 2011-12-12
SQL code
SELECT *
FROM A
WHERE EXISTS(
SELECT 1 FROM B WHERE B.PHONE1=A.PHONE OR B.PHONE2=A.PHONE OR B.PHONE3=A.PHONE
) OR EXISTS(
SELECT 1 FROM C WHERE C.PHONE1=C.PHONE OR C.PHONE2=A.PHONE O……
谢谢指点.小弟不才请问下,我想区分出来每一条记录是和表B中的记录匹配还是和表C中的记录匹配。
比如 记录中电话1234567890 和表B中的一条记录匹配,输出 1
记录中电话133000000 和表C中的一条记录匹配,输出 2
请问上记如何实现
作者: iamheyjudy 发布时间: 2011-12-12
SELECT A.PHONE ,'匹配' +CASE WHEN A.PHONE=B.PHONE1 THEN 'B.PHONE1' ELSE '' END +CASE WHEN A.PHONE=B.PHONE2 THEN 'B.PHONE2' ELSE '' END +CASE WHEN A.PHONE=B.PHONE3 THEN 'B.PHONE3' ELSE '' END +CASE WHEN A.PHONE=C.PHONE1 THEN 'C.PHONE1' ELSE '' END +CASE WHEN A.PHONE=C.PHONE2 THEN 'C.PHONE2' ELSE '' END +CASE WHEN A.PHONE=C.PHONE3 THEN 'C.PHONE3' ELSE '' END FROM A LEFT JOIN B ON A.PHONE=B.PHONE1 OR A.PHONE=B.PHONE2 OR A.PHONE=B.PHONE3 LEFT JOIN B ON A.PHONE=C.PHONE1 OR A.PHONE=C.PHONE2 OR C.PHONE=B.PHONE3 WHERE B.ID IS NOT NULL OR C.ID IS NOT NULL
作者: guguda2008 发布时间: 2011-12-12
作者: guguda2008 发布时间: 2011-12-12
SQL code
SELECT
A.PHONE
,'匹配'
+CASE WHEN A.PHONE=B.PHONE1 THEN 'B.PHONE1' ELSE '' END
+CASE WHEN A.PHONE=B.PHONE2 THEN 'B.PHONE2' ELSE '' END
+CASE WHEN A.PHONE=B.PHONE3 THEN 'B.PHONE3' EL……
这样执行特别慢,数据大约1万条
作者: iamheyjudy 发布时间: 2011-12-12
作者: guguda2008 发布时间: 2011-12-12
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28