查看: 2114|回复: 8

优化一个sql语句

[复制链接]
论坛徽章:
1
数据库板块每日发贴之星
日期:2009-06-11 01:01:02
发表于 2009-8-20 11:35 | 显示全部楼层 |阅读模式
做一个作业测试,目的是实现通过数据链接bj由远程数据库向本地表中导入10个数据。过程中sql语句如下:
insert into sh.tb  
select *
    from sh.tb@bj
   where tb_id >
         (select max(tb_id) from sh.tb)     --本地表最大序列号
     and tb_id <
         (select max(tb_id) + 11 from sh.tb);


该语句执行很长时间都没有结果,帮我看看让它执行快些
论坛徽章:
55
ITPUB元老
日期:2009-12-05 20:26:01
发表于 2009-8-20 11:37 | 显示全部楼层
在本地获取到这个 max(tb_id)  然后改写SQL为具体的值,试试看

使用道具 举报

回复
论坛徽章:
0
发表于 2009-8-20 11:39 | 显示全部楼层
*改成列名吧

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2009-8-20 12:53 | 显示全部楼层


Try!

insert into sh.tb
  select a1.*
    from sh.tb@bj a1, (select max(tb_id) max_tb_id from sh.tb) a2
   where a1.tb_id > a2.max_tb_id
     and a1.tb_id < a2.max_tb_id + 11;

使用道具 举报

回复
论坛徽章:
1
数据库板块每日发贴之星
日期:2009-06-11 01:01:02
 楼主| 发表于 2009-8-20 13:49 | 显示全部楼层

回复 #4 bell6248 的帖子

按照你的方法,果真查询速度快多了,谢谢

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:蛇
日期:2009-09-29 15:44:15ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152010年世界杯参赛球队:日本
日期:2010-05-04 17:51:192010年世界杯参赛球队:南非
日期:2010-04-28 10:07:122010年世界杯参赛球队:希腊
日期:2010-04-23 16:19:412010新春纪念徽章
日期:2010-03-01 11:08:342010年世界杯参赛球队:科特迪瓦
日期:2010-01-27 14:47:432010年世界杯参赛球队:意大利
日期:2010-01-25 08:58:012010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:鼠
日期:2009-11-10 11:54:09
发表于 2009-8-20 17:34 | 显示全部楼层
通常表链接的性能还是好些

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2009-04-07 11:17:10ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04宝马
日期:2014-02-10 11:54:34
发表于 2009-8-20 19:38 | 显示全部楼层
原帖由 bell6248 于 2009-8-20 12:53 发表


Try!

insert into sh.tb
  select a1.*
    from sh.tb@bj a1, (select max(tb_id) max_tb_id from sh.tb) a2
   where a1.tb_id > a2.max_tb_id
     and a1.tb_id < a2.max_tb_id + 11;



使用道具 举报

回复
论坛徽章:
5
2009日食纪念
日期:2009-07-22 09:30:00祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:08:29ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
发表于 2009-8-20 21:56 | 显示全部楼层
莫非这种不关联的子查询 也当 关联的在处理?

使用道具 举报

回复
论坛徽章:
0
发表于 2009-8-24 11:09 | 显示全部楼层
楼主把 select 放在where 里面,做每一次判断都要一个select,而把他放在from 里面只要select 一次就可以在where 条件里面直接用,当然要快很多。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表