最近半年一直接觸oracle,走強制索引的場景越來越多,很多表加了索引看sql的執行計畫(pl/sql developer中的快捷鍵f5)發現還是很慢,就像沒有走索引一樣。
這裡查了下強制索引的形式,一下這段進攻參考:
首先要看你的oracle優化器採用的是rbo還是cbo,
(1)如果使用的是rbo的話,會按照規則順序來進行的.
(2)如果使用的是cbo的話,那麼可以使用hint方式進行修改。
語法:select /*+ index(table indexname)*/
如果查詢語句中,表用到別名時,上邊語句中的table一定要是別名,否則不走執行強制索引
select /*+index(t idx_date)*/
from student t
where t.stunum > 00000001
and t.stunum < 32000010
group by t.class
ps:檢視執行計畫,使用"select * from table(dbms_xplan.display)" explain plan命令後得到的執行計畫也是可以的。還有一種通過sqlplus輸入:
sql> set autotrace on
sql> select * from dual; 也是可以檢視的。
ORACLE的強制索引
在一些場景下,可能oracle不會自動走索引,這時候,如果對業務清晰,可以嘗試使用強制索引,測試查詢語句的效能。以emp表為例 先在emp表中建立唯一索引,如圖。普通搜尋 select from emp t檢視執行計畫 f5 可以看到,是走的全表掃瞄。使用強制索引,在select 後面加上 中間加上...
oracle強制索引使用
強制索引格式 select tablename.from tablename table alias where fieldname 說明 index table alias indexname 必須出現在select 之後,字段之前 tablename 為表名,如果sql中表有別名,則必須使用表的...
主鍵與索引的區別 ( 強制索引)
主鍵是表中的乙個或多個字段,它的值用於惟一地標識表中的某一條記錄.使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,只有當經常查詢索引列中的資料時,才需要在表上建立索引。索引占用磁碟空間,並且降低新增 刪除和更新行的速度。當然索引也有好處就是查詢速度快,它利...