Index für mehrere Tabellen neu setzen

Hallo zusammen!
Wie kann ich mit nur einer SQL-Anweisung den Index für mehrere Tabellen neu setzen (rebuild)?

Danke im Voraus!

Matt

hi!

da du keine datenbank nennst, gehe ich mal von oracle aus:

in einem aufwaschen geht das natürlich nicht, ABER mit einem kleinen spool-file ist es kein problem:

spool rebuild_index.sql
select ‚alter index ‚||index_name||‘ rebuild noreverse;‘
from user_indexes;

spool off

@rebuild_index.sql;

grüße,
tomh

Hi,

da du keine datenbank nennst, gehe ich mal von oracle aus:

Und ich von 8i aufwärts:

in einem aufwaschen geht das natürlich nicht, ABER mit einem
kleinen spool-file ist es kein problem:

Auch ohne Spool-file klappt das so:

begin
 for i in ( select index\_name from user\_indexes) loop
 EXECUTE IMMEDIATE ('alter index ' || 
 i.index\_name || 
 ' rebuild noreverse');
 end loop;
end;

Gruß

J.

hi!

da du keine datenbank nennst, gehe ich mal von oracle aus:

Und ich von 8i aufwärts:

ich ging halt von einer 7er aus (ich wollt’s „allgemein“ halten :wink:

Auch ohne Spool-file klappt das so:

begin
for i in ( select index_name from user_indexes) loop
EXECUTE IMMEDIATE (‚alter index ’ ||
i.index_name ||
’ rebuild noreverse‘);
end loop;
end;

*grmpf* seit einer woche bastle ich an scripts herum, verwende in jeder zweiten zeile das „execute immediate“ - und dann spoole ich doch wieder wie verrückt herum (und danach liegen dann millionen von sql-scripts in den dubiosesten temporär-verzeichnissen)

grüße,
tomh