程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據獲取的實際方式演示

Oracle數據獲取的實際方式演示

編輯:Oracle數據庫基礎

以下的文章主要主要是對Oracle數據獲取的實際方式的測試,我們首先是通過建立典型的實驗環境,來對Oracle數據獲取的實際操作來進行詳細的說明,以下就是文章的具體內容描述,望你浏覽之後會有所收獲。

首先建立實驗環境 

  1. create table test as select * from dba_objects where 0=1;  
  2. create index ind_test_id on test(object_id);  
  3. insert into test select * from dba_objects  
  4. where object_id is not null and object_id>10000 order by object_id desc;  
  5. analyze table test compute statistics for table for all columns for all indexes;  
  6. Table Access Full  
  7. SQL> set autotrace trace;  
  8. SQL> select object_id from test;  
  9. set autotrace trace;  
  10. select object_id from test;  
  11. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |  
  12. 1 | TABLE Access FULL| TEST | 58650 | 229K | 239 (1)| 00:00:03 |  

注意這是因為object_id列默認是可以為null的,如果修改成not null那麼Oracle數據獲取方式會變成什麼方式?

  1. Index Fast Full Scan  
  2. alter table test modify(object_id not null);  
  3. select object_id from test;  
  4. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |  
  5. 1 | INDEX FAST FULL SCAN| IND_TEST_ID | 58650 | 229K| 66 (0)| 00:00:01 |  
  6. Index Full Scan  
  7. select/*+ index(test ind_TEST_ID)*/ object_id from test;  
  8. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |  
  9. 1 | INDEX FULL SCAN| IND_TEST_ID | 58650 | 229K| 240 (1)| 00:00:03 |  
  10. Index Range Scan  
  11. select/*+ index(test ind_TEST_ID)*/ object_id from test where object_id < 68926;  
  12. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |  
  13. 1 | INDEX RANGE SCAN| IND_TEST_ID | 57903 | 226K| 237 (1)| 00:00:03  
  14. SQL> select object_id from test where rownum<11; INDEX FAST FULL SCAN  
  15. OBJECT_ID  
  16. 68917  
  17. 68918  
  18. 68919  
  19. 68920  
  20. 68921  
  21. 68922  
  22. 68923  
  23. 68924  
  24. 68925  
  25. 68926  

已選擇10行。

  1. SQL> select/*+ index(test ind_TEST_ID)*/ object_id from test where rownum<11; INDEX FULL SCAN  
  2. OBJECT_ID  
  3. 10001  
  4. 10002  
  5. 10003  
  6. 10004  
  7. 10005  
  8. 10006  
  9. 10007  
  10. 10008  
  11. 10009  
  12. 10010  

已選擇10行。 

  1. select * from test where rownum < 2;  
  2. ....... 69554 .......  

其他的不關注只關注OBJECT_ID列 。以上的相關內容就是對@@@@@@@的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved