-
ANALYZE TABLE neobnoví index, že?
Nevím, ale v dnešní době byste měli používat
DBMS_STATS.GATHER_TABLE_STATS
spíše nežANALYZE TABLE
-
Přímé načtení znamená, že data se nevkládají řádek po řádku, ale hromadně, viz Načtení přímé cesty
-
Pokud se váš index stane
UNUSABLE
pak to musí být globální index. -
Použijte
UPDATE GLOBAL INDEXES
klauzule, tj.alter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES;
nebo vytvořte místní indexy. -
Záleží na tom, které sloupce jste indexovali. Místo celé tabulky můžete také spustit
DBMS_STATS.GATHER_INDEX_STATS
. SDBMS_STATS.GATHER_TABLE_STATS
můžete také zadat pouze jednotlivé oddíly a dokonce i jednotlivé sloupce.
btw, na mnoho otázek by moje odpověď ve skutečnosti měla znít:"Konzultovali jste dokumentaci Oracle"? nebo "znáte google"? Podle vašich snímků obrazovky používáte schéma SYS
a tabulkový prostor SYSAUX
pro vaše uživatelské objekty. Neměl bys to dělat. Vytvořte si vlastního uživatele a vytvořte libovolný objekt v tomto schématu.
Obecně existují tři typy rozdělených indexů:
- GLOBÁLNÍ INDEX:Máte jeden velký index pokrývající celou tabulku. Toto je povinné například pro UNIQUE INDEXES, pokud indexované sloupce nejsou součástí klíče oddílu. Ve skutečnosti takový index není rozdělen. (jak je uvedeno v
ALL_INDEXES
) - LOCAL INDEX:Tento index je rozdělen stejným způsobem jako podkladová tabulka. Každý oddíl tabulky má odpovídající oddíl indexu.
- ODDĚLENÝ INDEX:Tento index je rozdělen, ale jiný než podkladová tabulka. Myslím, že je dokonce možné vytvořit dělený index na nerozdělené tabulce. Dělené indexy jsou omezeny pouze na velmi speciální případy použití. Vlastně si nedokážu představit, kde by takový index měl smysl.