程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> oracle學習之索引誤區

oracle學習之索引誤區

編輯:關於Oracle數據庫

       大家都知道索引可以提高速率消除排序等,但是實際使用中往往存在濫用的情況,不僅浪費了資源,而且索引還起到了負面的作用。往往大家還不能覺察到這樣的錯誤,導致生產系統故障。 普通索引: 普通索引很簡單使用,不過實際上還有一些小的誤區。

      1.問題:count(1) avg() sum() min() max()只有當索引非空情況下查詢才會走索引

      解決方案:count()的時候如果有索引有空值無法解決。而avg() sum() min() max()處理時候加不加索引 is not null,結果一樣,但是加索引is not null 時候會走索引掃描速度提高很多。

      2.min(),max()同時查詢時候只有索引非空時候才會走索引。

      解決方案:加索引is not null,而且max() min()分開進行查詢效率更高。

      3.問題:返回非索引列會產生table access by index rowid)

      解決方案:如果不需要查詢非索引列盡量避免,這樣可避免table access by index rowid,實在不行建立組合索引

      4.問題:索引可以提高速度,是不是索引越多越好?

      解決方案:索引並不是越多越好,索引要建的合理,否則插入、更新、刪除效率很低。如果某一列有普通索引和組合索引,這時候考慮是不是如果組合索引第一列為普通索引時候,drop普通索引。

      另外也可以考慮現將索引失效,然後等操作完畢後使得索引生效。 當然生產庫的操作盡量在業務少的時候做,以免占用資源,對系統造成壓力。

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