and B.ID in
这个是什么,表中没出现过啊,是不是B.BID
这个是什么,表中没出现过啊,是不是B.BID
解决方案 »
- 请问,如何采用Thin方式连接Oracle数据库,用VC开发可以吗?
- oracle10g for window 求下载地址
- 请教!!!!!!!!!!!!!!
- 着急啊,我的机器上网很慢,帮帮忙吧大哥们!
- oracle9i中,怎样使一个列为自动增长型的?能说的详细点吗?
- 新手上路!求一本好书!
- sys密码忘了怎么办?
- 高手帮忙看看怎么写SQL句子,急
- 关于序列的两个问题(并发问题,带order by插入时用序列)
- PL/SQL 连接RedHat6.3中Oracle出现ORA-12514:监听程序当前无法识别连接描述符中请求的服务
- SQL语言问题(oracle专有)
- 续:求一查询语句,一个视图有八个字段,其中这个视图的数据是从其他50个视图union出来的.....
from A,
(select B.BID,B.BUserID,C.CName
from B,C
where B.BUserID=C.CUserID
) E where A.AID=E.BID
from B,A,C
where A.AID=B.BID and B.BUserID=C.CUserID我觉得就这样就行了
(
select B.BID
from B,C
where B.BUserID=C.CUserID
)
你不觉得这个是多余的吗?
查询计划怎么跑?(按时Oracle新手!)SQL Analyzer能不能用?而且不会启动SQL Analyzer!要登录Management Server!老是不行!
from A,B,C
where A.AID=B.BID and B.BUserID=C.CUserID就可以了.先创建 plan_table
set autotrace traceonly
就可以看到执行计划.还有一种方法就是不执行SQL,直接查看某个sql 的执行计划如下:
1. 在当前用户下创建PLAN_TABLE:CREATE GLOBAL TEMPORARY TABLE PLAN_TABLE (STATEMENT_ID VARCHAR2(30) NULL, TIMESTAMP DATE NULL,
REMARKS VARCHAR2(80) NULL, OPERATION VARCHAR2(30) NULL,
OPTIONS VARCHAR2(30) NULL, OBJECT_NODE VARCHAR2(128) NULL,
OBJECT_OWNER VARCHAR2(30) NULL, OBJECT_NAME VARCHAR2(30) NULL,
OBJECT_INSTANCE NUMBER NULL, OBJECT_TYPE VARCHAR2(30) NULL,
OPTIMIZER VARCHAR2(255) NULL, SEARCH_COLUMNS NUMBER NULL,
ID NUMBER NULL, PARENT_ID NUMBER NULL, POSITION NUMBER NULL,
COST NUMBER NULL, CARDINALITY NUMBER NULL, BYTES NUMBER NULL,
OTHER_TAG VARCHAR2(255) NULL, PARTITION_START VARCHAR2(255) NULL,
PARTITION_STOP VARCHAR2(255) NULL, PARTITION_ID NUMBER NULL, OTHER LONG NULL)
ON COMMIT DELETE ROWS;(我已经在DRMSPDVP下创建好了)2. 运行如下SQL:DELETE FROM PLAN_TABLE;
EXPLAIN PLAN SET STATEMENT_ID = '1'
FOR
SELECT * FROM DEALER WHERE DISTID=:a
;SELECT LPAD(' ',2*(LEVEL-1))||operation||' '||options
||' '||object_name
||' '||DECODE(id, 0, 'Cost = '||position) "Query Plan"
FROM plan_table
START WITH id = 0 AND statement_id = '1'
CONNECT BY PRIOR id = parent_id AND statement_id ='1';注意:将红色部分替换为要解释的SQL即可.如果用Command的SQL包含参数符号'?',则要将'?'依次替换为:a, :b, ...等的参数形式.3. 上面的SQL将作如下格式的输出Query Plan
------------------------------------------------------------------------------------
SELECT STATEMENT Cost = 3
TABLE ACCESS BY INDEX ROWID DEALER
INDEX UNIQUE SCAN PK_DEALER上面是我最常看的输出形式,还有其他一些输出格式的SQL,可参考Oracle文档的Explain Plan命令
4. 除了看索引外,有时表与表的Join方法以及Join的顺序也很重要,一些很特殊的情况下,Oracle可能选择
了一个很慢的Execution Plan,这时要用Hints来调整
select B.BUserID, C.CName, B.BID, A.AName,
from A,B,C
where A.AID=B.BID and B.BUserID=C.CUserID
的话,就不是我想要的数据了!
主要是首先不知道这个小组做的东西是什么,那么就要先找出来;然后再根据这些物品找出所有做的人!找出物品的语句是
select B.BID
from B,C
where B.BUserID=C.CUserID
然后再找人,
select B.BUserID, C.CName, B.BID, A.AName,
from A,B,C
where A.AID=B.BID and B.BUserID=C.CUserID
and B.BID in
(
select B.BID
from B,C
where B.BUserID=C.CUserID
),其实这里还有很多要选择的select B.BUserid.....Sum(Func(),...
这里有很多要选的东西,那么在select中放函数会不会有影响