日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 频繁操作删除对索引的影响吗,清除Oracle中无用索引 改善DML性能

發布時間:2024/3/26 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 频繁操作删除对索引的影响吗,清除Oracle中无用索引 改善DML性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DML性能低下,其中最嚴重的原因之一是無用索引的存在。所有SQL的插入,更新和刪除操作在它們需要在每一行數據被改變時修改大量索引的時候會變得更慢。

許多Oracle 管理人員只要看見在一個SQL 查詢的WHERE語句出現了一列的話就會為它分配索引。雖然這個方法能夠讓SQL運行得更快速,但是基于功能的Oracle 索引使得數據庫管理人員有可能在數據表的行上過度分配索引。過度分配索引會嚴重影響關鍵Oracle 數據表的性能。

在Oracle9i出現以前,沒有辦法確定SQL查詢沒有使用的索引。讓我們看看Oracle9i提供了什么樣的方法讓你找到這些索引并刪除它們。

過程是相當簡單的。Oracle9i有一個工具能夠讓你使用ALTER INDEX命令監視索引的使用。然后你可以查找這些沒有使用的索引并從數據庫里刪除它們。

下面是一段腳本,它能夠打開一個系統中所有索引的監視功能:

set pages 999;

set heading off;

spoolrun_monitor.sql

select

'alter index '||owner||'.'||index_name||' monitoring usage;'

from

dba_indexes

where

owner not in ('SYS','SYSTEM','PERFSTAT')

;

spool off;

@run_monitor

你需要等待一段時間直到在數據庫上運行了足夠多的SQL語句以后,然后你就可以查詢新的V$OBJECT_USAGE視圖。

select

index_name,

table_name,

mon,

used

from

v$object_usage;

在V$OBJECT_USAGE有一列被稱作USED,它的值是YES或者NO。不幸的是,它不會告訴你Oracle使用了這個索引多少次,但是這個工具對于找出沒有使用的索引還是很有用的

注:

set ? heading ? off ? ? --讓結果行的標題不顯示

spool ? c:\dropTable.sql

select ? 'drop ? table ? ' ? || ? table_name ? || ? '; ' ? from ? user_tables;

spool ? off

這樣,只要簡單的編輯c:\dropTable.sql,就可以得到一個刪除當前用戶的表的批處理sql

總結

以上是生活随笔為你收集整理的oracle 频繁操作删除对索引的影响吗,清除Oracle中无用索引 改善DML性能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。