您好,登錄后才能下訂單哦!
性能優化
全表掃描(多塊讀的size)數據量比較多的時候
1,并行查詢 2,多塊讀 3,索引全掃描
row ID
索引就是一個數據庫對象,包含
k值和row id的新表。
OLTP:線上交易系統
常見索引:B樹索引(隨著數據量的增大,右邊節點也會隨之增大,導致不平衡,產生分支節點,增加I/O)
位圖索引(適用于數據倉庫中,增刪改比較少的表中,需要整張表的信息。)
好處:獲取表的所有信息。獲取row id的開始值和結束值。缺點:索引對增刪改有影響,鎖定兩張表
基于函數的索引(使用局限性比較大,使用率低。需要評估,)
造成函數索引失效:1,外層套索引 2,做運算 3,模糊查詢
統計收集索引信息的時間:周內(凌晨 2-4點)周末()
統計表信息,數據字典
反向索引:
收集T表統計信息:exec dbms_stats.gather_table_stats('SCOTT','T');
新建表的統計信息為空
索引不可見:alter index cust_id_idx invisible
alter index cust_id_idx visible
反向索引:為了避免熱塊效應(性能很低),引用反向索引,使用分塊方法。
缺點:不支持范圍掃描,只能用于等值查詢
索引掃描類型 索引的唯一掃描 (索引值唯一,where判斷=)
索引的范圍掃描 (讀單塊)
索引跳躍掃描 (復合索引)
索引快速全掃描(多塊掃描)
索引全掃描
1,2索引常用
2種優化訪問路徑
1,全表掃描(對表中所有進行簡單掃描,主要是在某個查詢請求表的大部分塊時,)
2,索引訪問路徑(基于row id)
數值小于百分之七會走索引
undo
ORA-01555 快照過舊(有大事務)updata事務太大,undo表空間存放不下,解決辦法就是強制關閉可以終止事務。擴大undo表空間。
undo 里面有前鏡像。CTAS create table as select
undo不能設成自動擴展
索引全掃描
產生索引全掃描的條件:
order by 對應 id
group by 對應 id
索引快速全掃描:(同時訪問多個塊)
索引本身包含查詢中的所有列時,oracle執行索引快速全掃描。
索引名稱:(如何確定是否使用了 索引)
alter index cust_id_idx monitoring usage;
select index_name,monitoring,used from v$object_usage;
避免使用索引:
/*+NO_INDEX (有+號是提示,沒有+號是注釋)
查看執行計劃:
explain plan for select * from emp where empno=‘7765’
select * from emp(dbms_xplain_display)
不走索引的情況
索引列時不會有null(空值)的
有不等式時不走索引,in或not in時不走索引。
使用通配符時,模糊查詢時不走索引。
謂詞中使用了空值時不走索引。
查詢中包含函數的時候不走索引。
統計信息查詢
dbms 存儲過程包
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。