sql >> Databáze >  >> RDS >> Oracle

Oracle Indexy a typy indexů v oracle s příkladem

Budeme diskutovat o indexech/typech indexů Oracle v oracle s příkladem v tomto příspěvku. Osvětlím všechny možnosti, jak vytvořit index v oracle. Také bych diskutoval o tom, jak zkontrolovat velikost indexu v oracle. Doufám, že se vám tento příspěvek bude líbit. Budu se těšit na zpětnou vazbu k tomuto příspěvku

Co jsou indexy Oracle?

  • Stejně jako máme v učebnicích rejstřík, který nám pomáhá najít konkrétní téma v knize, Oracle index se chová stejným způsobem. V oracle máme různé typy indexů.
  • Indexy se používají k rychlému prohledávání řádků v tabulce Oracle. Pokud index není přítomen, výběrový dotaz musí přečíst celou tabulku a vrátit řádky. Pomocí Indexu lze řádky načíst rychle
  • Při načítání malého počtu řádků z tabulky bychom měli vytvářet indexy. nebo co nejrychleji načíst první sadu řádků z nějakého dotazu, který nakonec vrátí velký počet řádků. Záleží také na distribuci dat, tj. faktoru shlukování
  • Indexy jsou logicky a fyzicky nezávislé na datech v přidružené tabulce.
  • Indexy jsou volitelné struktury spojené s tabulkami a clustery. Můžete vytvořit indexy pro jeden nebo více sloupců tabulky, abyste urychlili provádění příkazů SQL v této tabulce.
  • Při správném použití jsou indexy primárním prostředkem ke snížení I/O disku.
  • Dotaz se na začátku rozhodne, zda použít index nebo ne
  • Nejlepší na indexech je, že výkon načítání indexovaných dat zůstává téměř konstantní, i když jsou vkládány nové řádky. Přítomnost mnoha indexů v tabulce však snižuje výkon aktualizací, mazání a vkládání, protože Oracle musí také aktualizovat indexy spojené s tabulkou.
  • Pokud jste vlastníkem tabulky, můžete vytvořit index, nebo pokud chcete vytvořit index pro tabulku v jiném schématu, měli byste mít buď systémové oprávnění VYTVOŘIT LIBOVOLNÝ INDEX  nebo indexové oprávnění pro tuto tabulku

Logický typ indexů

Definuje aplikační charakteristiky Index

Unikátní nebo nejedinečné Index může být jedinečný nebo nejedinečný. Oracle vytváří jedinečný index pro omezení primárního klíče a jedinečného klíče
Pokud jsou v tomto sloupci již přítomny nejedinečné indexy, nevytvoří nový jedinečný index pro primární klíč v Oracle
Kompozitní Index se může skládat z jednoho nebo více sloupců. Složené indexy mohou urychlit načítání dat pro příkazy SELECT, ve kterých klauzule WHERE odkazuje na všechny nebo úvodní část sloupců ve složeném indexu.
Indexy založené na funkcích Data indexovaného sloupce jsou založena na výpočtu
Indexy domén aplikací Tento index se používá ve speciálních aplikacích (prostorové, textové).

Co je Pseudo sloupec ROWID

ROWID vrátí adresu každého řádku v tabulce. Oracle každému řádku přiřadí ROWID.ROWID se skládá z následujících

  • Číslo datového objektu
  • Datový blok v datovém souboru, ve kterém je řádek umístěn
  • Pozice řádku v datovém bloku (první řádek je 0)
  • Datový soubor, ve kterém je řádek umístěn (první soubor je 1). Číslo souboru je relativní k tabulkovému prostoru.

Oracle používá ROWID interně pro přístup k řádkům. Oracle například ukládá ROWID do indexu a používá jej pro přístup k řádku v tabulce.

ŘÁDEK řádků můžete zobrazit pomocí příkazu SELECT následovně:

vyberte rowid, emp_name z emp;

ROWID EMP_NAME

AAADC576474722aSAAA   John

Oracle poskytuje balíček s názvem DBMS_ROWID k dekódování ROWID.

Jakmile je řádek přiřazen, ROWID Oracle nemění ROWID po dobu životnosti řádku. Ale změní se, když je tabulka znovu sestavena, když se řádky přesouvají přes oddíl nebo zmenšují tabulku

Typy indexů v oracle s příkladem

V oracle je 6 různých typů indexů

(1) B-strom

(2) Komprimovaný B-strom

(3)  Bitmapa

(4) Na základě funkcí

(5) Reverzní klíč (RKI)

(6) Indexová organizovaná tabulka (IOT).

Pojďme se podrobně seznámit s každým z nich a jak vytvořit index v oracle pro každý z těchto typů

B – Index stromu:

  • Indexy B-stromu (vyvážený strom) jsou nejběžnějším typem indexu.
  • Index B-Tree uložil ROWID a hodnotu klíče indexu ve stromové struktuře.
  • Při vytváření indexu se vytvoří blok ROOT, poté se vytvoří bloky BRANCH a nakonec bloky LEAF.
  • Každá větev uchovává rozsah dat, které uchovává její listové bloky, a každý kořen uchovává rozsah dat, která její větve uchovávají:
  • Indexy B-stromu jsou nejužitečnější ve sloupcích, které se objevují v klauzuli where (SELECT … WHERE EMPNO=1).
  • Server Oracle udržuje strom vyvážený rozdělením indexových bloků, když jsou do tabulky vložena nová data.
  • Kdykoli je v tabulce indexu proveden příkaz DML, dojde k aktivitě indexu, díky čemuž index roste (přidává listy a větve).

Výhody

  • Všechny bloky listů stromu jsou ve stejné hloubce.
  • Indexy B-stromu automaticky zůstávají vyvážené.
  • Všechny bloky B-stromu jsou v průměru plné ze tří čtvrtin.
  • Stromy B poskytují vynikající výkon při vyhledávání pro širokou škálu dotazů, včetně přesné shody a hledání rozsahu.
  • Vkládání, aktualizace a mazání jsou efektivní a udržují pořadí klíčů pro rychlé načtení.
  • Výkon B-stromu je dobrý pro malé i velké stoly a nesnižuje se s rostoucí velikostí stolu.
VYTVOŘTE   INDEX ON  (,…)TABLESPACE ;PříkladCreate index   scott.exp_idx   v tabulce scott.example(  název)Nástroje tabulkového prostoru; /před> 

Co jsou komprimované indexy B-stromu

  • Komprimované indexy B-stromu jsou postaveny na velkých tabulkách v prostředí datového skladu. V tomto typu indexu jsou eliminovány duplicitní výskyty stejné hodnoty, čímž se snižuje množství úložného prostoru, který index vyžaduje.
  • V komprimovaném indexu B-Tree je pro každou hodnotu klíče uchováván seznam ROWID
  • Zadáním klíčového slova COMPRESS při vytváření indexu (CREATE INDEX … COMPRESS) vytvoříte komprimovaný index B-Stromu.
  • Běžný index B-Stromu lze znovu vytvořit pomocí klíčového slova COMPRESS a zkomprimovat jej.
VYTVOŘIT   INDEX ON  (,…)PCTFREE TABLESPACE Komprimovat  <číslo sloupce>

Co jsou indexy bitmap

  • Bitmapové indexy jsou nejvhodnější pro data s nízkou odlišnou mohutností (na rozdíl od indexů B-Stromu).
  • Tento typ indexu vytváří binární mapu všech hodnot indexu a ukládá tuto mapu do indexových bloků, což znamená, že index bude vyžadovat méně místa než index B-Strom.
  • Každý bit v bitmapě odpovídá možnému rowid. Pokud je bit nastaven, znamená to, že řádek s odpovídajícím rowid obsahuje hodnotu klíče. Mapovací funkce převádí bitovou pozici na skutečný rowid, takže index bitmapy poskytuje stejnou funkčnost jako běžný index, i když interně používá jinou reprezentaci. Pokud je počet různých hodnot klíče malý, pak jsou bitmapové indexy prostorově velmi efektivní
  • Pokud jsou v tabulkách bitmapové indexy, aktualizace odstraní úplné uzamčení tabulky. Index bitmapy je tedy užitečný u velkých sloupců s nízkou aktivitou DML (občasné aktualizace) nebo u tabulek pouze pro čtení. To je důvod, proč často zjistíte, že bitmapové indexy jsou široce používány v prostředí datového skladu (DWH).
  • Struktura indexu bitmap obsahuje mapu bitů, které označují hodnotu ve sloupci, například pro sloupec GENDER bude blok indexu obsahovat počáteční ROWID, koncový ROWID a bitovou mapu:
  • Bitmapové indexy jsou velmi užitečné při vytváření ve sloupcích s nízkou mohutností a používají se s operátorem AND &OR v podmínce dotazu:
VYTVOŘTE BITMAP  INDEX ON  (,…)PCTFREE TABLESPACE 

Příklad

CREATE BITMAP INDEX ON emp_data(gender);SELECT COUNT(*) FROM emp_dataWHERE GENDER=’M”;

Výhody bitmapových indexů

  • Snížená doba odezvy u velkých tříd dotazů
  • Výrazné snížení využití prostoru ve srovnání s jinými technikami indexování
  • Dramatické zvýšení výkonu i na velmi nízkém hardwaru
  • Velmi efektivní paralelní DML a načítání

Indexy založené na funkcích

Indexy založené na funkcích jsou indexy vytvořené na sloupcích, na které je obvykle aplikována funkce.

Při použití funkce na indexovaném sloupci je index ignorován, proto je pro tyto operace velmi užitečný index založený na funkcích.

CREATE INDEX ON  [ Function(,;PříkladCREATE INDEX EMP_IDX na EMP(UPPER(ENAME));SELECT *FROM EmpWHERE UPPER(Jméno) jako "JOHN";

Co jsou indexy obráceného klíče

  • Jsou to speciální typy indexů B-Stromu a jsou velmi užitečné, když jsou vytvořeny se sloupci obsahujícími sekvenční čísla.
  • Při použití běžného B-stromu se index rozroste a bude mít mnoho větví a možná i několik úrovní, což způsobí snížení výkonu. RKI problém vyřeší obrácením bajtů každého klíče sloupce a indexováním nových dat.
  • li>
  • Tato metoda distribuuje data v indexu rovnoměrně. Vytvoření RKI se provádí pomocí klíčového slova REVERSE:CREATE INDEX … ON … REVERSE;
CREATE INDEX ON  ()TABLESPACE REVERSE;PříkladCREATE INDEX emp_idx i ON emp_table (křestní jméno,příjmení) REVERSE;

Co jsou indexově organizované tabulky (IOT)

  • Když používáme B-Strom, bitmapové a reverzní klíčové indexy se používají pro tabulky, které ukládají data neuspořádaným způsobem (Hromadné tabulky).
  • Tyto indexy obsahují umístění ROWID požadovaného řádku tabulky, což umožňuje přímý přístup k datům řádku.
  • tabulka uspořádaná podle indexu se liší od běžné tabulky, protože data pro tabulku jsou uchovávána v jejím přidruženém indexu. Změny v datech tabulky, jako je přidání nových řádků, aktualizace řádků nebo odstranění řádků, vedou k aktualizaci indexu.
  • Tabulka uspořádaná podle indexu je jako běžná tabulka s indexem v jednom nebo více sloupcích, ale namísto udržování dvou oddělených úložišť pro tabulku a index B-stromu databázový systém udržuje pouze jeden B- stromový index, který obsahuje jak kódovanou hodnotu klíče, tak hodnoty souvisejících sloupců pro odpovídající řádek. Spíše než mít rowid řádku jako druhý prvek položky indexu, skutečný řádek dat je uložen v indexu B-stromu. Datové řádky jsou vytvořeny na primárním klíči pro tabulku a každá položka indexu B-stromu obsahuje . Indexově uspořádané tabulky jsou vhodné pro přístup k datům pomocí primárního klíče nebo jakéhokoli klíče, který je platnou předponou primárního klíče.
  • Nedochází k duplicitě hodnot klíče, protože s klíčem jsou uloženy pouze neklíčové hodnoty sloupců. Můžete sestavit sekundární indexy, které zajistí efektivní přístup pro jiné sloupce. Aplikace manipulují s tabulkou uspořádanou podle indexu stejně jako s běžnou tabulkou pomocí příkazů SQL. Databázový systém však provádí všechny operace manipulací s odpovídajícím indexem B-stromu.

Funkce uspořádané tabulky Index

  • Primární klíč jednoznačně identifikuje řádek; musí být zadán primární klíč
  • Přístup založený na primárním klíči
  • Logický rowid v pseudosloupec ROWID umožňuje vytváření sekundárních indexů
  • JEDINEČNÉ omezení není povoleno, ale spouštěče jsou povoleny
  • Nelze uložit do clusteru
  • Může obsahovat sloupce typu LOB, ale ne sloupce LONG
  • Distribuce a replikace nejsou podporovány


Příkaz CREATE TABLE:CREATE TABLE …ORGANIZATION INDEX TABLESPACE … (určete, že se jedná o IOT)PCTTHRESHOLD … (určete % bloku, který se má podržet, aby se uložila data řádku, platné 0-50 (výchozí 50))VČETNĚ … (určete který sloupec přerušit řádek, když délka řádku překročí PCTTHRESHOLD) OVERFLOW TABLESPACE … (určete tabulkový prostor, kde bude uložena druhá část řádku) MAPPING TABLE; (způsobí vytvoření mapovací tabulky, potřebné při vytváření bitmapového indexu na IOT)

Tabulka mapování mapuje fyzické ROWID indexu na logické ROWID v IOT. IOT používá logické ROWID ke správě přístupu k tabulce podle indexu, protože fyzické ROWID se mění, kdykoli jsou do tabulky přidána data nebo z ní odebrána data. Chcete-li odlišit IOT od jiných indexů, dotazujte se na pohled USER_INDEXES pomocí sloupce pct_direct_access. Pouze IOT bude mít pro tento sloupec hodnotu jinou než NULL.

Indexy domén aplikací

Oracle poskytuje rozšiřitelné indexování k přizpůsobení indexů na komplexní datové typy, jako jsou dokumenty, prostorová data, obrázky a videoklipy, a k využití specializovaných technik indexování.

Pomocí rozšiřitelného indexování můžete zapouzdřit rutiny správy indexu specifické pro aplikaci jako typ indexu objekt schématu a definujte index domény (index specifický pro aplikaci) na sloupcích tabulky nebo atributech typu objektu. Rozšiřitelné indexování také poskytuje efektivní zpracování operátora specifického pro aplikaci s.

Aplikační software zvaný cartridg e, řídí strukturu a obsah indexu domény. Server Oracle spolupracuje s aplikací při vytváření, údržbě a vyhledávání indexu domény. Samotná struktura indexu může být uložena v databázi Oracle jako indexově organizovaná tabulka nebo externě jako soubor.

Použití indexů domén

Indexy domén jsou vytvářeny pomocí logiky indexování poskytované uživatelem definovaným typem indexu. Typ indexu poskytuje účinný mechanismus pro přístup k datům, která splňují určité predikáty operátorů. Typ indexu definovaný uživatelem je obvykle součástí volby Oracle, jako je volba Prostorová.

Například SpatialIndextype umožňuje efektivní vyhledávání a získávání prostorových dat, která překrývají daný ohraničující rámeček.

Kazeta určuje parametry, které můžete zadat při vytváření a udržování indexu domény. Podobně jsou charakteristiky výkonu a úložiště indexu domény uvedeny ve specifické dokumentaci kazet.

Dosud jsme v oracle pokryli různé typy indexů na příkladu, pojďme se nyní podívat, jak je změnit/vypustit/znovu vytvořit

Jak znovu vytvořit indexy/obnovit index v oracle

Můžeme použít příkaz ALTER INDEX … REBUILD k reorganizaci nebo komprimaci existujícího indexu nebo ke změně jeho charakteristik úložiště

Příkaz REBUILD používá existující index jako základ pro nový.

ALTER INDEX … REBUILD je obvykle rychlejší než vypuštění a opětovné vytvoření indexu.

Čte všechny indexové bloky pomocí víceblokových I/O a poté zahodí větvené bloky.

Další výhodou tohoto přístupu je, že starý index je stále dostupný pro dotazy, zatímco probíhá přestavba.

Změnit index    znovu sestavit;Změnit index    znovu vytvořit  tabulkový prostor ;

Jak psát prohlášení, která nepoužívají indexy

  • Můžete použít nápovědu k optimalizaci NO_INDEX, abyste CBO získali maximální flexibilitu a zároveň zakázali použití určitého indexu.
  • Pomocí FULL nápovědy můžete optimalizátora přinutit, aby místo prohledávání indexu zvolil úplné prohledávání tabulky.
  • Můžete použít tipy INDEX, INDEX_COMBINE nebo AND_EQUAL, abyste optimalizátoru přinutili používat jeden index nebo sadu uvedených indexů místo jiného.

Jak získat statistiky pro indexy

Statistiky indexu se shromažďují pomocí příkazu ANALYZE INDEX nebo dbms_stats.

Dostupné možnosti jsou COMPUTE/ESTIMATE STATISTICS nebo VALIDATE STRUCTURE.

Od 10g výše, když je index vytvořen, výpočetní statistika se provádí automaticky

Při použití struktury ověření vyplní Oracle pohled INDEX_STATS statistikami souvisejícími s analyzovaným indexem. Statistika obsahuje počet řad listů a bloků (LF_ROWS, LF_BLKS), počet řad větví a bloků (BR_ROWS, BR_BLKS), počet smazaných řad listů (DEL_LF_ROWS), použité místo (USED_SPACE), počet odlišných klíčů (DISTINCT_KEYS) , atd. Tyto statistiky lze použít k určení, zda by měl být index znovu sestaven

Jak Oracle rozhoduje o použití indexu?

Oracle automaticky rozhodne, zda má být index používán jádrem Optimalizátoru.

Oracle se v závislosti na dotazu rozhodne, zda použije index.

Oracle dokáže pochopit, zda použití indexu zlepší výkon v daném dotazu. Pokud se Oracle domnívá, že použití indexu zlepší výkon, použije index, jinak bude index ignorovat.

Pojďme to pochopit na tomto příkladu

Máme tabulku emp   , která obsahuje emp_name, plat, dept_no, emp_no, date_of_joining a máme index emp_name

Dotaz 1

vyberte * z emp, kde emp_name ='Jan';

Výše uvedený dotaz použije index, protože se snažíme získat informace o emp na základě názvu.

Dotaz 2

vyberte * z emp;

Výše uvedený dotaz nebude používat index, protože se snažíme najít všechny řádky v tabulce a v dotazu nemáme klauzuli where

Dotaz 3

vyberte * z emp kde dept_no =5;

Výše uvedený dotaz nebude používat index, protože klauzule where nevybírá sloupec, který má index

Dotaz 4

vyberte * z emp where substr(emp_name,1,4) =’XYZW’;

Výše uvedený dotaz nebude používat index, protože klauzule where používá funkci ve sloupci a nemáme funkční index na emp_name

Jak vytvořit nebo znovu vytvořit index online?

Oracle ve starších verzích během procesu vytváření zamykal tabulku, na které se index vytváří. Tím je tabulka nedostupná pro manipulaci s daty během vytváření indexu.

Nyní s 8i představil Oracle online přestavbu indexu, kde Oracle nezamyká tabulku, na které se index vytváří.

Online indexování je poskytováno prostřednictvím klíčového slova ONLINE.

VYTVOŘTE   INDEX ON  (,…)PCTFREE TABLESPACE Online;Změnit index  znovu sestavit online;

V zásadě při online přestavbě Oracle uzamkne tabulku na začátku a na konci vytváření indexu. Umožňuje transakce mezi nimi. Mechanismus byl docela vylepšen s 11g a 12c

Jaké jsou nevýhody  indexů

Indexy zvyšují výkon výběrového dotazu, mohou také snížit výkon manipulace s daty.

Mnoho indexů v tabulce může výrazně zpomalit INSERTS a DELETE

Čím více indexů v tabulce, tím více času zabere vkládání a mazání.

Podobně každá změna indexovaného sloupce bude vyžadovat změnu indexu.

Takže musíme velmi pečlivě vybrat index a vypustit ty, které se nepoužívají.

I když se bere v úvahu i prostor navíc, který zabírají indexy, nemusí to příliš záležet, protože náklady na ukládání dat se podstatně snížily.

Co jsou nepoužitelné indexy

Nepoužitelný index je optimalizátorem při rozhodování o plánu vysvětlení ignorován

Není také spravován DML, tj. aktualizovat, vložit, odstranit, aktualizuje index

Důvodů, proč je index v nepoužitelném stavu, může být několik. Provedli jste znovu sestavení tabulky, ale neprovedli jste znovu sestavení indexu, index bude v nepoužitelném stavu. Dalším důvodem, proč je index nepoužitelný, je zlepšit výkon hromadného načítání. Dalším důvodem může být to, že optimalizátor pokaždé vybere nesprávný index, což je kritické, takže se můžete rozhodnout, že bude nepoužitelný

Nepoužitelný index nebo oddíl indexu musí být před použitím znovu sestaven nebo zrušen a znovu vytvořen. Zkrácení tabulky činí nepoužitelný index platným.

Počínaje Oracle Database 11g Release 2, když uděláte existující index nepoužitelným, jeho segment indexu bude zrušen.

Funkčnost nepoužitelných indexů závisí na nastavení inicializačního parametru SKIP_UNUSABLE_INDEXES.

Když má SKIP_UNUSABLE_INDEXES hodnotu TRUE (výchozí), pak:

Příkazy DML proti tabulce pokračují, ale nepoužitelné indexy se neudržují.

Příkazy DML končí s chybou, pokud existují nějaké nepoužitelné indexy, které se používají k vynucení omezení UNIQUE.

U nerozdělených indexů optimalizátor při vytváření přístupového plánu pro příkazy SELECT nezohledňuje žádné nepoužitelné indexy. Jedinou výjimkou je situace, kdy je index explicitně zadán pomocí nápovědy INDEX().

Když je SKIP_UNUSABLE_INDEXES NEPRAVDA, pak:

Pokud jsou přítomny nějaké nepoužitelné indexy nebo indexové oddíly, všechny příkazy DML, které by způsobily aktualizaci těchto indexů nebo indexových oddílů, jsou ukončeny s chybou.

V případě příkazů SELECT, pokud je přítomen nepoužitelný index nebo nepoužitelný oddíl indexu, ale optimalizátor se nerozhodne jej použít pro přístupový plán, příkaz pokračuje. Pokud se však optimalizátor rozhodne použít nepoužitelný index nebo nepoužitelný oddíl indexu, příkaz skončí s chybou.

Zobrazení datového slovníku na  indexech

DBA_INDEXES VŠECHNY_INDEXES USER_INDEXES Pohled DBA popisuje indexy všech tabulek v databázi. Zobrazení ALL popisuje indexy na všech tabulkách přístupných uživateli. Zobrazení USER je omezeno na indexy vlastněné uživatelem. Některé sloupce v těchto zobrazeních obsahují statistiky, které jsou generovány balíčkem DBMS_STATS nebo příkazem ANALYZE.
DBA_IND_COLUMNS VŠECHNY_IND_COLUMNS

USER_IND_COLUMNS

Tyto pohledy popisují sloupce indexů v tabulkách. Některé sloupce v těchto zobrazeních obsahují statistiky, které jsou generovány balíčkem DBMS_STATS nebo příkazem ANALYZE.
DBA_IND_EXPRESSIONS ALL_IND_EXPRESSIONS

USER_IND_EXPRESSIONS

Tyto pohledy popisují výrazy indexů založených na funkcích v tabulkách.
DBA_IND_STATISTICS ALL_IND_STATISTICS

USER_IND_STATISTICS

Tato zobrazení obsahují statistiky optimalizátoru pro indexy.

jak najít indexy v tabulce

set pagesize 50000 ověřit off echo offcol název_tabulky head 'Název_tabulky' formát a20col index_name head 'Název indexu' formát a25col název_sloupce head 'Název sloupce' formát a30break na název_tabulky na název_indexuvyberte     název_tabulky, index_název, název_sloupce, název_sloupce ze všech_název_tabulky jako horní_sloupce' ')uspořádat podle názvu_tabulky, názvu_indexu, umístění_sloupce/

Jak určit velikost indexu

Velikost INDEX vyberte název_segmentu,součet(bajty)/1024/1024/1024 jako „VELIKOST v GB“ z uživatelských_segmentů, kde název_segmentu='INDEX_NAME' seskupte podle názvu_segmentu;NEBOvyberte vlastníka,název_segmentu,součet(bajtů)/1024/1024/1024 jako „VELIKOST v GB" z dba_segments, kde owner='SCHEMA_NAME' a segment_name='INDEX_NAME' seskupují podle vlastníka,segment_name; Seznam velikostí všech INDEXŮ UŽIVATELE vyberte název_segmentu,součet(bajty)/1024/1024/1024 jako „VELIKOST v GB“ z uživatelských_segmentů, kde typ_segmentu='INDEX' seskupte podle názvu_segmentu pořadí podle „SIZE v GB“ deskc;NEBOvyberte vlastníka,název_segmentu,součet(bajtů)/1024 /1024/1024 jako „VELIKOST v GB“ z dba_segments, kde vlastník='SCHEMA_NAME' a segment_type='INDEX' seskupují podle vlastníka, název_segmentu pořadí podle "SIZE v GB" popis;Součet velikostí všech indexů vybrat vlastníka,součet(bajty)/1024/1024/1024 jako „VELIKOST v GB“ z dba_segments, kde vlastník='SCHEMA_NAME' a segment_type='INDEX' seskupují podle vlastníka;

Jak určit index  definice

set long 4000select dbms_metadata.get_ddl('INDEX','',' 

Jak zjistit statistiku indexu

nastavit stránky 250set řádků 100set ověřit offcol formát název_tabulky a24 nadpis 'NÁZEV TABULKY'col index_name format a23 nadpis 'INDEX NAME'formát col u a1 nadpis 'U'col blevel formát 0 nadpis 'BL'col list_blocks formát 999990 nadpis 'LEAF |BLOCKS'col different_keys format 9999990 header 'DISTINCT|KEYS'col avg_leaf_blocks_per_key format 9999990 title 'LEAF|BLKS|/KEY'col avg_data_blocks_per_key format 9999990 nadpis 'DATA|BLKS_name table_name,dename'vyberte nadpis 'DATA|BLKS_name table_name,dename' 'UNIQUE', 'U', null ) u,blevel, leaf_blocks, different_keys,avg_leaf_blocks_per_key, avg_data_blocks_per_keyfrom sys.dba_indexes kde vlastník_tabulky jako horní('&vlastník')a název_tabulky jako horní_název,

 Související články

externí tabulky v Oracle :Podívejte se na tento příspěvek pro informace o použití externích tabulek v oracle s příkladem, jak vytvořit externí tabulku, jak ji používat
Oracle Create table :Tabulky jsou základní jednotkou dat úložiště v databázi Oracle. zabýváme se tím, jak používat příkaz Oracle create table k vytvoření tabulky s cizím klíčem /primární klíč
příkaz oracle create tablespace:Tento článek o tom, jak vytvořit tabulkový prostor v oracle, různé vlastnosti s ním spojené a různé příkazy vytvoření tabulkového prostoru
Zjištění stavu indexů a přiřazených sloupců pro tabulku
Virtuální index v Oracle:Co je virtuální index v Oracle? Použití, omezení, výhoda a způsob kontroly k vysvětlení plánu v databázi Oracle, Skrytý parametr _USE_NOSEGMENT_INDEXES
Faktor clusteringu Oracle Index:Jak se vypočítává faktor clustering Oracle Index a jak to ovlivňuje plán vysvětlení
Oracle Partition Index :Vysvětlení indexu oddílů Oracle,Co jsou globální indexy bez oddílů?, Co jsou místní indexy s předponou, místní index bez předpon

Doporučené kurzy

Zde je pěkný kurz Udemy pro Oracle SQL
Oracle-Sql-krok za krokem:Tento kurz pokrývá základní sql, spojení, vytváření tabulek a úpravu jejich struktury, vytváření zobrazení, sjednocení, sjednocení – vše a mnoho dalších věcí. . Skvělý kurz a kurz, který musíte mít pro začátečníky SQL
Úplný certifikační kurz Oracle SQL :Toto je dobrý kurz pro každého, kdo chce být Job připravený na vývojářské dovednosti SQL. Pěkně vysvětlený kurz
Oracle SQL Developer:Základy, tipy a triky :Vývojářský nástroj Oracle Sql používá mnoho vývojářů. Tento kurz nám poskytuje triky a lekce, jak jej efektivně používat a stát se produktivním vývojářem sql
Oracle SQL Performance Tuning Masterclass 2020 :Ladění výkonu je jednou z kritických a nejvyhledávanějších dovedností. Toto je dobrý kurz, jak se o tom dozvědět a začít s laděním výkonu SQL


  1. Použití MySQL Galera Cluster Replication k vytvoření geograficky distribuovaného clusteru:Část druhá

  2. Funkce DBTIMEZONE v Oracle

  3. Mohu parametrizovat název tabulky v připraveném příkazu?

  4. FORMAT() je hezké, ale…