Aselect * from b where id in (select id from a where leibie=1)
select * from b , a where b.id=a.id and a.leibie=1----------------------------------------------------------
Bselect (select mc from b where b.id=a.id) from a
select b.mc from a, b where a.id=b.id
上诉A,B中的两种方案,哪种更效率呢 ? 为什么呢?~ 个中有缺点又是什么呢?~
select * from b , a where b.id=a.id and a.leibie=1----------------------------------------------------------
Bselect (select mc from b where b.id=a.id) from a
select b.mc from a, b where a.id=b.id
上诉A,B中的两种方案,哪种更效率呢 ? 为什么呢?~ 个中有缺点又是什么呢?~
解决方案 »
- 关于oracle 数据一致性比较
- mysql on duplicate key update 如何用oracle中等效语句替代?
- QQ下的MsgEx.db如何打开?
- 我想将别的电脑上的oracle数据库,转移到另一台电脑上,怎么办呢?
- oracle两张表数据比对
- RAC安装问题(急)
- 100分急求: C#.NET 程序调用ORACLE存储过程出错 ORA-06550 PLS-00306
- 存储过程编译不了?
- 怎么写一个存储过程,里面只有一个表和简单的sql语句
- Enterprise Manager 可以起动,也可以搜索到节点,但是不显示数据库.
- Derby数据库里,怎么删除带有外键的表里的数据
- 数据库服务器经常出现CPU占用率100%的情况,联入数据库的有40多个用户,主要在运行数据量比较大的报表时出现这个现象,怎么优化报表程序都难以改善
in查询不一定会比两表连接要慢,这取决与子查询返回的记录数,如果子查询返回的记录数量非常少的情况下,b 表非常大的情况下in查询也是非常快的
B方案
select (select mc from b where b.id=a.id) from a 是相关子查询,它会对a表做全表扫描,并且会一条一条的扫描,如果与b表有id相等的时候才会返回记录。如果a表很小只有不到10条记录而b表非常大,执行的效率也会非常快,反之a表非常大效率就慢了对于两表关联查询这个主要是要靠索引来提高查询效率,如果两表都非常大,索引没建好的话执行效率也不敢恭维,很有可能走全表扫描或者全索引快速扫描