1.
select count(t1.id)
from table1 t1
where t1.id = (select t2.id from table2 t2 where t2......);2.
select count(t1.id)
from table1 t1,table2 t2
where t1.id = t2.id
and t2......;问下,这2中写法都可以达到汇总表1的目的吧?
那有性能上的区别吗?
如果不是count(),而是t1.其他字段呢?还有区别吗
select count(t1.id)
from table1 t1
where t1.id = (select t2.id from table2 t2 where t2......);2.
select count(t1.id)
from table1 t1,table2 t2
where t1.id = t2.id
and t2......;问下,这2中写法都可以达到汇总表1的目的吧?
那有性能上的区别吗?
如果不是count(),而是t1.其他字段呢?还有区别吗
解决方案 »
- ORACLE ORA-12569:TNS:包校验和失败
- 数据类型不一致: 应为 BLOB, CLOB, 但却获得 CHAR
- 用什么效率比较高?
- 小弟初学~oracle 开发工具 用什么比较好?
- 发现在Users组权限下运行OraClient10g_home1(Windows32位版本)会报错,请求解决。
- ★★★请教各位高手,怎样使两台服务器的oracle9i的数据同步?★★★
- 请问 oracle8 备份能在oracle9 中恢复?
- 请教一个SQL的问题??
- 为什么会出错!!你能给我解释吗??
- 用VC+ADO+Ora8i客户端连不上Ora8i服务器???急!
- 两表关联查询
- 求一条sql语句,能统计时间差!
第一种写法有错吧
=要改为in
我认为第二种好点
还要看id在t2表中的唯一性
如果有重复值的话,第二种不准确
不重复的话是一样的
可以将第一种写法改为
select count(t1.id)
from table1 t1
where exists(select 1 from table2 t2 where t2......
and t2.id=t1.id);
如果id是主键count()结果就是0或1了
大家应该明白我的意识吧
1,第一种写法语法有误,应该把=改成in
select count(t1.id)
from table1 t1
where t1.id in (select t2.id from table2 t2 where t2......); 2,在理论上是第二种效率要高,因为关联查询比关联子查询效率要高。3,最好先看执行计划然后结合该表涉及的业务流程,确定该采用哪种sql比较好。
如果是这样的话,两个差不多吧
看执行计划
SQL>EXPLAIN PLAN FOR 你的sql语句; eg:SQL>EXPLAIN PLAN FOR SELECT * FROM EMP WHERE EMPNO=7369;
然后
SELECT plan_table_output
FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE')); 查看结果就是前面SQL语句的执行计划。
Explain Plan 就是最常用的,也很方便..