日期:2014-05-17  浏览次数:20715 次

关于查询的问题,请求大牛指教
本帖最后由 hulu2moyu 于 2013-04-07 14:57:50 编辑
一个简单的查询select * from emp where 条件,条件是empno有多个可选项,例如:12345,4568,7896等,我想要的结果就是在emp表中,empno等于12345,4568,7896的三条记录(不许用in),求指教!

------解决方案--------------------
先说说数据量具体有多大,查询出来多少条数据,一般采用索引或者分区就可以解决,没必要把简单问题复杂化。
------解决方案--------------------

SQL> set autotrace on explain
SQL> alter session set optimizer_mode='rule';

会话已更改。

SQL> select * from scott.emp where empno in (12345,4568,7896);

未选定行


执行计划
----------------------

-----------------------------------------------

------解决方案--------------------
 Id  
------解决方案--------------------
 Operation                    
------解决方案--------------------
 Name   
------解决方案--------------------

-----------------------------------------------

------解决方案--------------------
   0 
------解决方案--------------------
 SELECT STATEMENT             
------解决方案--------------------
        
------解决方案--------------------


------解决方案--------------------
   1 
------解决方案--------------------
  CONCATENATION               
------解决方案--------------------
        
------解决方案--------------------


------解决方案--------------------
   2 
------解决方案--------------------
   TABLE ACCESS BY INDEX ROWID
------解决方案--------------------
 EMP    
------解决方案--------------------


------解决方案--------------------
   3 
------解决方案--------------------
    INDEX UNIQUE SCAN