• 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流

请问一下,那个sql比较快

马前小卒 2004-12-21 01:39:59
请问一下,下列2个sql,那个比较快

1>
select * from table1,table2 where table1.id=table2.id and substr(table2.code,1,3)='001'

2>
select * from table1 where table1.id in (select id from table2 where substr(code,1,3)='001')

其中:
substr(table2.code,1,3)='001',中的'001'是不变的常量
table2的数据在100左右
table1的数据在8千条左右

顺便问以下,是否有工具可以判断sql的效率
...全文
362 点赞 收藏 32
写回复
32 条回复
马前小卒 2005年06月17日
谢谢各位的参与,结贴
回复 点赞
wzc1997 2005年02月18日
1快很多,两条SQL对比应该是好几倍的处理时间差距
回复 点赞
soniczck 2005年02月17日
哈哈 见识 谢谢老大们 select * from table1,table2 where table1.id=table2.id and table2.code >='001' and table2.code <='001' + 'z'其中的'z'这种是什么写法

你的这种写法是错误的,字符串不能象'001' + 'z'这样相加,这样还'001'||'z'差不多
回复 点赞
yoyodd 2005年02月17日
用IN 的比较慢
别的不说,碰到集合查询像IN, NOT IN, EXISTS ..,Oracle 本身会试图把集合查询转换成表连接,如果转换不成,则会照原样查询
另外,IN也会造成全表扫描,table1中有8千条记录就要判断8千次
回复 点赞
lhm27556722 2005年02月06日
哈哈 见识 谢谢老大们 select * from table1,table2 where table1.id=table2.id and table2.code >='001' and table2.code <='001' + 'z'其中的'z'这种是什么写法
回复 点赞
马前小卒 2005年02月05日
谢谢各位了
回复 点赞
rabbitbug 2005年01月16日
肯定是1快啊
用in的话会慢好多
回复 点赞
yoyodd 2005年01月16日
尽量不要用集合查询
会全表扫描的,效率低
回复 点赞
love89 2005年01月04日
in 的效率低
回复 点赞
shan1119 2004年12月31日
我觉得表连接比较快,我没试过
回复 点赞
liuyi8903 2004年12月31日
楼上所说的不是绝对的。

看你使用的索引字段在两张表之间的出现频率了。

应该说选择出现频率低的那种表作为基表才是比较正确的。
回复 点赞
tyrone98 2004年12月30日
差不多吧,我没有试过,可能执行计划都是一样的。
回复 点赞
Ineed123 2004年12月30日
1快
TABLE2记录较少,你可以让它做基表即"from table1,table2 ",你现在是对的!如果是三张表以上一般以起中间联系作用的那张表作为基表. 所谓基表就是放在"FROM"最后的那张表.
回复 点赞
leborety 2004年12月30日
学习
回复 点赞
liuxuepeng78 2004年12月30日
select * from table1,table2 where table1.id=table2.id and substr(table2.code,1,3)='001'
快一些,而且你可以写成
select * from table1,table2 where table1.id=table2.id and table2.code >='001' and table2.code <='001' + 'z'这样你在索引里包含table2.code会更快一些
回复 点赞
fuxia 2004年12月29日
肯定是1快,至于like还是substr自己看看哪个执行时间短就知道了,我们不清楚你的数据结构。
回复 点赞
yoyodd 2004年12月28日
学习中
回复 点赞
liwenchao 2004年12月23日
1采用连接的速度快!
回复 点赞
innowy 2004年12月22日
in 的效率低
回复 点赞
liuyi8903 2004年12月21日
使用substr会使索引失效.除非你建立基于函数的索引.
因此like还是适合些.
回复 点赞
发动态
发帖子
Oracle
创建于2007-09-28

6410

社区成员

5.4w+

社区内容

Oracle开发相关技术讨论
社区公告
暂无公告