首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于查询的有关问题,请求大牛指教

2013-06-19 
关于查询的问题,请求大牛指教本帖最后由 hulu2moyu 于 2013-04-07 14:57:50 编辑一个简单的查询select * f

关于查询的问题,请求大牛指教
本帖最后由 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         


[解决办法]
 PK_EMP 
[解决办法]


[解决办法]
   4 
[解决办法]
   TABLE ACCESS BY INDEX ROWID
[解决办法]
 EMP    
[解决办法]


[解决办法]
   5 
[解决办法]
    INDEX UNIQUE SCAN         
[解决办法]
 PK_EMP 
[解决办法]


[解决办法]
   6 
[解决办法]
   TABLE ACCESS BY INDEX ROWID
[解决办法]
 EMP    
[解决办法]


[解决办法]
   7 
[解决办法]
    INDEX UNIQUE SCAN         
[解决办法]
 PK_EMP 
[解决办法]

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

Note
-----
   - 'PLAN_TABLE' is old version
   - rule based optimizer used (consider using cbo)

SQL> alter session set optimizer_mode='choose';

会话已更改。

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

未选定行


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

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

[解决办法]
 Id  
[解决办法]
 Operation                    
[解决办法]
 Name   
[解决办法]
 Rows  
[解决办法]
 Bytes 
[解决办法]
 Cost (%CPU)
[解决办法]



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

[解决办法]
   0 
[解决办法]
 SELECT STATEMENT             
[解决办法]
        
[解决办法]
     2 
[解决办法]
    74 
[解决办法]
     1   (0)
[解决办法]


[解决办法]
   1 
[解决办法]
  INLIST ITERATOR             
[解决办法]
        
[解决办法]
       
[解决办法]
       
[解决办法]
            
[解决办法]


[解决办法]
   2 
[解决办法]
   TABLE ACCESS BY INDEX ROWID
[解决办法]
 EMP    
[解决办法]
     2 
[解决办法]
    74 
[解决办法]
     1   (0)
[解决办法]


[解决办法]
   3 
[解决办法]
    INDEX UNIQUE SCAN         
[解决办法]
 PK_EMP 
[解决办法]
     2 
[解决办法]
       
[解决办法]
     1   (0)
------解决方案--------------------



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

SQL> alter session set optimizer_mode='all_rows';

会话已更改。

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

未选定行


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

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

[解决办法]
 Id  
[解决办法]
 Operation                    
[解决办法]
 Name   
[解决办法]
 Rows  
[解决办法]
 Bytes 
[解决办法]
 Cost (%CPU)
[解决办法]

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

[解决办法]
   0 
[解决办法]
 SELECT STATEMENT             
[解决办法]
        
[解决办法]
     2 
[解决办法]
    74 
[解决办法]
     1   (0)
[解决办法]


[解决办法]
   1 
[解决办法]
  INLIST ITERATOR             
[解决办法]
        
[解决办法]
       
[解决办法]
       
[解决办法]
            
[解决办法]


[解决办法]
   2 
[解决办法]
   TABLE ACCESS BY INDEX ROWID
[解决办法]
 EMP    


[解决办法]
     2 
[解决办法]
    74 
[解决办法]
     1   (0)
[解决办法]


[解决办法]
   3 
[解决办法]
    INDEX UNIQUE SCAN         
[解决办法]
 PK_EMP 
[解决办法]
     2 
[解决办法]
       
[解决办法]
     1   (0)
[解决办法]

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

SQL> alter session set optimizer_mode='first_rows';

会话已更改。

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

未选定行


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

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

[解决办法]
 Id  
[解决办法]
 Operation                    
[解决办法]
 Name   
[解决办法]
 Rows  
[解决办法]
 Bytes 
[解决办法]
 Cost (%CPU)
[解决办法]

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

[解决办法]
   0 
[解决办法]
 SELECT STATEMENT             
[解决办法]
        
[解决办法]
     2 
[解决办法]
    74 
[解决办法]
     1   (0)
------解决方案--------------------




[解决办法]
   1 
[解决办法]
  INLIST ITERATOR             
[解决办法]
        
[解决办法]
       
[解决办法]
       
[解决办法]
            
[解决办法]


[解决办法]
   2 
[解决办法]
   TABLE ACCESS BY INDEX ROWID
[解决办法]
 EMP    
[解决办法]
     2 
[解决办法]
    74 
[解决办法]
     1   (0)
[解决办法]


[解决办法]
   3 
[解决办法]
    INDEX UNIQUE SCAN         
[解决办法]
 PK_EMP 
[解决办法]
     2 
[解决办法]
       
[解决办法]
     1   (0)
[解决办法]

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

SQL>
SQL>
SQL>


[解决办法]
关于查询的有关问题,请求大牛指教

顶楼上.

用in未必不走索引.
[解决办法]
 各位 ,本人也是 对这个 不是 很有研究 ,我在网上 查就是 这么 说的,在实际情况下 我 也 没怎么 测试 过。有什么 不对的 ,见笑了。关于查询的有关问题,请求大牛指教

热点排行