请问一下,那个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的效率
...全文
414 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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还是适合些.
加载更多回复(12)

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧