请问:如下两句谁执行速度快?

[复制链接]
查看11 | 回复5 | 2008-2-13 12:43:03 | 显示全部楼层 |阅读模式
1、SELECT A.ART_NO,A.DESCR,A.NN_BUY_PRICE*(1+T.VAT_PERC/100) FROM ARTICLE A,TAX T
WHERE A.VAT_NO=T.VAT_NO;
2.SELECT A.ART_NO,A.DESCR,A.NN_BUY_PRICE*(1+T.VAT_PERC/100) FROM TAX T,ARTICLE A
WHERE A.VAT_NO=T.VAT_NO;
其中ARTICLE 表中有19000条记录和25个字段,TAX 表中有8条记录和3个字段,请问:两句谁执行速度快?理由是什么?多谢!
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
在不熟悉你的系统是否使用 cbo ,是否分析表和索引,是否在连接字段上建立了索引,还有你的数据库版本的情况下
做任何 唯一推断都可能是错误的!

之所以问这样的问题,是因为 对 sql优化缺乏最基本的了解,所以应该先从执行计划入手去学习,单单就这一个sql而言,你运行一下就知道哪个快了,光这么问,谁能告诉你一个唯一标准答案的话,那只能说明他不懂sql tuning
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
UNIX +ORACLE7下,在连接字段上建立了无索引,但ARTICLE以ART_NO为索引,顺便问一下:是哪一个命令可以测试运行时间?
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
最初由 hfzzh 发布
[B]顺便问一下:是哪一个命令可以测试运行时间? [/B]

set timing on;
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
如果你能去搜索一下 trace / sqltrace ,或者 executionplan /nested loops 等关键字的相关的文章,那才是tuningsql 而不是猜sql
根据你的版本和猜测你的状况,假如连接字段两个表都建立了索引,则 from 后面,大表在前小表在后 的快,如果只有其中一个字段建立了索引或者两个都没有建立,则两个sql几乎没什么差异
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
谢谢各位!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行