關於關鍵表的索引重建

2021-08-24 18:24:41 字數 837 閱讀 6320

針對一些大的運營商的系統,比如電信 銀行系統。通常會有些表的資料量會很大百萬、千萬等,此時查詢速度是乙個很重要很關鍵的因素。查詢響應慢是使用者無法接受的。所以要針對這些大資料量表要建立相應的索引。但是經過長時間應用之後如果大表進行了頻繁的增刪改查操作後,可能會導致索引失效,嚴重會應用客戶使用及使用者體驗。所以此時需要對大表進行索引分析甚至重建。現在就索引重建大體講述一下。

大體步驟如下:

tablea表為例

1)、備份原始例項表資料庫指令碼(主鍵,索引,外來鍵,約束等)

2)、對原始表的資料總數量進行核實。

select count(1) from tablea;

3)、對原始表進行備份,生成新錶。

create table tablea_bak as select * from tablea;

4)、核實新錶資料總量

select count(1) from tablea_bak

5)、刪除原始表,如果刪除失敗,原因是原始表有外來鍵約束。需要將子表(tablec)與原始表的外來鍵備份,備份後刪除子表與原始表的外來鍵。外來鍵刪除後,刪除原始表。如果刪除成功,則表明原始表不存在子表外來鍵的關聯,無需備份子表外來鍵。

6)、刪除原始表之後進行備份表的重新命名。

alter table tablea_bak rename to tablea;

7)、重新命名後,對第一步備份的原始表的主鍵、外來鍵、索引、約束進行執行恢復。並且檢視第5步是否有輸出(備份的子表外來鍵),有輸出則執行,無輸出則完成。

8)、檢查、確認與之前原始表資料的完整性以及主鍵、索引、外來鍵、約束的正確性。

完成上面8個步驟則已經實現了對大表的索引重建工作。系統會對需要執行索引重建的朋友有所幫助

關於lob型別欄位的重建索引問題

首先,對於lob型別的字段,oracle會預設在其上自動建立乙個lob型別的索引,這個索引不支援普通的alter index rebuild方式,需要用alter table方式一起move。比如 create table lobtest id blob,name clob tablespace u...

關於 Oracle 分割槽索引的失效和重建

建立測試表 sql create table t as select object id,object name from dba objects 表已建立。sql select min object id max object id from t min object id max object ...

重建資料庫表所有索引

重建資料庫表所有索引 2006 06 12 先選擇要修復的資料庫 declare name varchar 100 所有使用者表游標 declare authors cursor cursor for select name from sysobjects where xtype u order b...