資料庫重建索引的乙個思路

2021-10-16 12:19:16 字數 855 閱讀 3825

最近需求涉及到乙個儲存實時資料的功能,使用oracle資料庫。

儲存的資料量不大,但是覆蓋會比較頻繁。

造成了乙個就幾萬資料的表,序列可能都達到千萬了。

這個在oracle環境下其實還好,但是需要相容pgsql環境,使用了serial自增序列,最大21億,因此了解了下關於重置序列的方式。

方案一:

先drop再create

優點:簡單

缺點:在服務執行過程中執行存在風險

方案二:

利用負數步長將序列值減小,再恢復步長為1

此次使用方案二在程式中定期重置序列

儲存過程樣例如下:

create or replace procedure seq_reset

as num number(10);

sql varchar2(100);

begin

execute immediate 'select seq_test.nextval from dual' into num;

if num > 10000000

then

num:=-(num - 1);

sql:='alter sequence seq_test increment by '|| num;

execute immediate sql;

execute immediate 'select seq_test.nextval from dual';

execute immediate 'alter sequence seq_test increment by 1';

end if ;

end seq_reset;

/

重建ORACLE資料庫索引

declare str varchar2 400 begin 重建oracle索引 for tmp idx in select tablespace name,owner,table name,index name from all indexes where owner hnacms and te...

重建索引的乙個小技巧

摘自丁奇mysql實戰45講 create table t id int primary key,k int notnull name varchar 16 index k engine innodb 對於該錶t,如果要重建索引k,sql語句可以這麼寫 alter table t drop inde...

重建資料庫表所有索引

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