Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Индекси и типове индекси в Oracle с пример

В тази публикация ще обсъдим индексите/типовете индекси на Oracle в oracle с пример. Ще разгледам всички опции за създаване на индекс в oracle. Също така ще обсъдя  как да проверя размера на индекса в oracle. Надявам се тази публикация да ви хареса. Ще очаквам с нетърпение  отзиви за тази публикация

Какво представляват индексите на Oracle?

  • Точно както имаме индекс в учебниците, за да ни помогне да намерим конкретната тема в книгата, индексът на Oracle се държи по същия начин. ние имаме различни типове индекси в oracle.
  • Индексите се използват за бързо търсене по редовете в таблицата на оракула. Ако индексът не присъства, заявката за избор трябва да прочете цялата таблица и да върне редовете. С Index редовете могат да бъдат извлечени бързо
  • Трябва да създаваме индекси, когато извличаме малък брой редове от таблица. или да извлечете първия набор от редове възможно най-бързо от някаква заявка, която в крайна сметка ще върне голям брой редове. Зависи и от разпределението на данните, т.е. фактор на клъстериране
  • Индексите са логически и физически независими от данните в асоциираната таблица.
  • Индексите са незадължителни структури, свързани с таблици и клъстери. Можете да създадете индекси на една или повече колони на таблица, за да ускорите изпълнението на SQL изрази в тази таблица.
  • Индексите са основното средство за намаляване на дисковия I/O, когато се използва правилно.
  • Заявката решава в началото дали да използва индекс или не
  • Най-доброто нещо при индексите е, че ефективността на извличане на индексирани данни остава почти постоянна, дори когато се вмъкват нови редове. Въпреки това, наличието на много индекси в таблица намалява производителността на актуализациите, изтриванията и вмъкванията, тъй като Oracle също трябва да актуализира индексите, свързани с таблицата.
  • Ако сте  притежател на таблица, можете да създадете индекс  или ако искате да създадете индекс за таблица в друга схема, тогава трябва или да имате  CREATE ANY INDEX системни привилегии  или привилегия за индексиране на тази таблица

Логически тип индекси

Той определя характеристиките на приложението на Индекса

Уникален или неуникален Индексът може да бъде уникален или неуникален. Oracle създава уникален индекс за първичен ключ и ограничения на уникален ключ
Ако в тази колона вече присъстват неуникални индекси, няма да създаде нов уникален индекс за първичен ключ в Oracle
Композит Индексът може да се състои от една или няколко колони. Съставните индекси могат да ускорят извличането на данни за изрази SELECT, в които клаузата WHERE препраща към всички или към началната част от колоните в съставния индекс.
Базирани на функции индекси Данните на индексираната колона се основават на изчисление
Индекси на домейн на приложения Този индекс се използва в специални приложения (пространствени, текстови).

Какво  е псевдоколона ROWID

ROWID връща адреса на всеки ред в таблицата. Oracle присвоява ROWID на всеки ред. ROWID се състои от следните

  • Номерът на обекта с данни на обекта
  • Блокът от данни във файла с данни, в който се намира редът
  • Позицията на реда в блока от данни (първият ред е 0)
  • Файлът с данни, в който се намира редът (първият файл е 1). Номерът на файла е относителен към пространството за таблици.

Oracle използва ROWID вътрешно за достъп до редове. Например Oracle съхранява ROWID в индекса и го използва за достъп до реда в таблицата.

Можете да покажете ROWID на редовете, като използвате командата SELECT, както следва:

изберете rowid, emp_name от emp;

ROWID EMP_NAME

AAADC576474722aSAAA   Джон

Oracle предоставя пакет, наречен DBMS_ROWID за декодиране на ROWID.

След като се присвои ред, Oracle не променя ROWID по време на живота на реда. Но се променя, когато таблицата се изгражда отново, Когато редовете се преместват през дяла или се свиват на таблицата

Типове индекси в oracle с пример

Има 6 различни типа индекси в oracle

(1) B-дърво

(2) Компресирано B-дърво

(3)  Bitmap

(4) Функционално базиран

(5) Клавиш за обръщане (RKI)

(6) Индексна организирана таблица (IOT).

Нека разберем всеки от тях подробно и как да създадем индекс в oracle за всеки от тези типове

B – Индекс на дървото:

  • B-Tree индексите (балансирано дърво) са най-често срещаният тип индекс.
  • Индексът B-Tree съхранява ROWID и стойността на ключа на индекса в дървовидна структура.
  • При създаването на индекс се създава ROOT блок, след това се създават BRANCH блокове и накрая блокове LEAF.
  • Всеки клон съдържа диапазона от данни, които съдържат неговите листови блокове, а всеки корен съдържа диапазона от данни, които неговите клонове съдържат:
  • Индексите на B-Tree са най-полезни за колони, които се появяват в клаузата where (SELECT ... WHERE EMPNO=1).
  • Сървърът Oracle поддържа баланса на дървото чрез разделяне на индексни блокове, когато в таблицата се вмъкнат нови данни.
  • Винаги, когато DML израз се изпълнява върху таблицата на индекса, се извършва индексна активност, което кара индекса да нараства (добавете лист и клонове).

Предимства

  • Всички листни блокове на дървото са на една и съща дълбочина.
  • Индексите на B-дървото автоматично остават балансирани.
  • Всички блокове на B-дървото са пълни средно три четвърти.
  • B-дърветата осигуряват отлична производителност на извличане за широк спектър от заявки, включително търсене на точно съвпадение и диапазон.
  • Вмъкванията, актуализациите и изтриванията са ефективни и поддържат ред на ключове за бързо извличане.
  • Ефективността на B-дървото е добра както за малки, така и за големи таблици и не се влошава с нарастването на размера на таблицата.
CREATE   ИНДЕКС <име_индекс>ON <име_на_таблица> (<име_на_стола>,<име_на_колона>…)TABLESPACE <име_пространство_на_таблица>;ExampleCreate index   scott.exp_idx   на таблица име scott.example(TO) /предварително> 

Какво представлява компресираните индекси на B-дърво

  • Компресираните B-Tree индекси са изградени върху големи таблици в среда на хранилище за данни. При този тип индекс се елиминират дублиращи се появявания на една и съща стойност, като по този начин се намалява количеството пространство за съхранение, което се изисква от индекса.
  • В компресиран индекс на B-Tree за всяка ключова стойност се съхранява списък с ROWID.
  • Указването на ключовата дума COMPRESS при създаване на индекс (CREATE INDEX … COMPRESS) ще създаде компресиран индекс B-Tree.
  • Редовен индекс на B-Tree може да бъде възстановен с помощта на ключовата дума COMPRESS, за да се компресира.
СЪЗДАДЕТЕ <УНИКАЛНО|НЕ УНИКАЛНО>  ИНДЕКС <име_на_индекс>ВКЛЮЧЕНО <име_на_таблица> (<име_на_колона>,<име_на_колона>…)PCTFREE <цяло число>ТАБЛИЧНО ПРОСТРАНСТВО <име_пространство на таблица>Компресиране  <номер на колона>

Какво представляват растерните индекси

  • Bitmap индексите са най-подходящи за данни с ниска отделна мощност (за разлика от индексите на B-Tree).
  • Този тип индекс създава двоична карта на всички стойности на индекса и съхранява тази карта в индексните блокове, това означава, че индексът ще изисква по-малко място от индекса B-Tree.
  • Всеки бит в растерната карта съответства на възможен rowid. Ако битът е зададен, това означава, че редът със съответния rowid съдържа стойността на ключа. Функцията за преобразуване преобразува позицията на битовете в действителен rowid, така че индексът на растерната карта осигурява същата функционалност като обикновен индекс, въпреки че използва различно вътрешно представяне. Ако броят на различните ключови стойности е малък, тогава растерните индекси са много ефективни от пространството
  • Когато в таблиците има индекси на растерни изображения, тогава актуализациите ще премахнат пълните заключвания на таблицата. Така че индексът на растерното изображение е полезен за големи колони с ниска DML (рядка актуализация) активност или таблици само за четене. Това е причината често да откриете, че растерните индекси се използват широко в средата на склад за данни (DWH).
  • Структурата на индекса на растерната карта съдържа карта от битове, които показват стойността в колоната, например за колоната GENDER, индексният блок ще съдържа началния ROWID, крайния ROWID и битовата карта:
  • Индексите на растерните изображения са много полезни, когато се създават върху колони с ниска кардиналност, използвани с оператора И &ИЛИ в условието на заявката:
СЪЗДАВАНЕ НА BITMAP  ИНДЕКС <име_индекс>ВКЛ. <име_на_таблица> (<име_на_колона>,<име_на_колона>…)PCTFREE <цяло число>ТАБЛИЧНО ПРОСТРАНСТВО <име_на_пространство на таблици>

Пример

СЪЗЗВАЙТЕ BITMAP ИНДЕКС ВЪРХУ emp_data(gender);ИЗБЕРЕТЕ БРОЙ(*) ОТ emp_dataWHERE GENDER=’M”;

Предимства на растерните индекси

  • Намалено време за отговор за големи класове заявки
  • Съществено намаляване на използването на пространството в сравнение с други техники за индексиране
  • Драматично повишаване на производителността дори при хардуер от много нисък клас
  • Много ефективен паралелен DML и зареждания

Индекси, базирани на функции

Функционално-базираните индекси са индекси, създадени върху колони, върху които обикновено се прилага функция.

Когато използвате функция в индексирана колона, индексът се игнорира, следователно индекс, базиран на функции, е много полезен за тези операции.

CREATE INDEX <име_индекс>ON <име_на_таблица> [ Функция(<име_на_колона>,<име_на_колона.)]TABLESPACE <име_пространство_на_таблици>;ПримерCREATE INDEX EMP_IDX на EMP(UPPER(ENAME));SELECT *FROM EmpWHERE UPPER(Ename) като 'ДЖОН';

Какво представляват индексите с обратен ключ

  • Те са специални типове индекси B-Tree и са много полезни, когато се създават върху колони, съдържащи последователни номера.
  • Когато се използва обикновено B-дърво, индексът ще нарасне, за да има много клонове и може би няколко нива, като по този начин причинява влошаване на производителността, RKI решава проблема, като обръща байтовете на всеки ключ на колона и индексира новите данни.
  • Този метод разпределя равномерно данните в индекса. Създаването на RKI се извършва с помощта на ключовата дума REVERSE:CREATE INDEX … ON … REVERSE;
CREATE INDEX ON  ()TABLESPACE REVERSE;ExampleCREATE INDEX emp_idx i ON emp_table (собствено, фамилно име) REVERSE;

Какво е Индексно организирани таблици (IOT)

  • Когато използваме B-Tree, индексите на Bitmap и Reverse се използват за таблици, които съхраняват данни по неподреден начин (Heap Tables).
  • Тези индекси съдържат местоположението на ROWID на необходимия ред в таблицата, като по този начин позволяват директен достъп до данните в реда
  • Индексна организирана таблица се различава от обикновената таблица, тъй като данните за таблицата се съхраняват в свързания с нея индекс. Промените в данните в таблицата, като добавяне на нови редове, актуализиране на редове или изтриване на редове, водят до актуализиране на индекса.
  • Индекс-организираната таблица е като обикновена таблица с индекс на една или повече от нейните колони, но вместо да поддържа две отделни хранилища за таблицата и индекса на B-дървото, системата на базата данни поддържа само един B- дървовиден индекс, който съдържа както стойността на кодирания ключ, така и стойностите на свързаните колони за съответния ред. Вместо да има rowid на ред като втори елемент от записа в индекса, действителният ред с данни се съхранява в индекса на B-дървото. Редовете с данни са изградени върху първичния ключ за таблицата и всеки запис в индекса на B-дървото съдържа <стойност_първичен_ключ, не_първичен_ключ_колона_стойности>. Индексно организираните таблици са подходящи за достъп до данни чрез първичен ключ или всеки ключ, който е валиден префикс на първичния ключ.
  • Няма дублиране на ключови стойности, защото само стойности на колони, които не са ключови, се съхраняват с ключа. Можете да създавате вторични индекси, за да осигурите ефективен достъп от други колони. Приложенията манипулират организираната от индекс таблица точно като обикновена таблица, използвайки SQL изрази. Въпреки това системата на базата данни изпълнява всички операции, като манипулира съответния индекс на B-дърво.

Характеристики на таблицата, организирана от индекси

  • Първичният ключ уникално идентифицира ред; първичният ключ трябва да бъде посочен
  • Достъп, базиран на първичен ключ
  • Логическият rowid в псевдоколона ROWID позволява изграждането на вторични индекси
  • УНИКАЛНО ограничение не е разрешено, но задействанията са разрешени
  • Не може да се съхранява в клъстер
  • Може да съдържа LOB колони, но не и ДЪЛГИ колони
  • Разпространението и репликацията не се поддържат


Команда CREATE TABLE:CREATE TABLE …ORGANIZATION INDEX TABLESPACE … (посочете, че това е IOT)PCTTHRESHOLD … (посочете % от блока, който да задържите, за да съхранявате данни за редове, валидни 0-50 (по подразбиране 50)) ВКЛЮЧВАНЕ … (посочете коя колона да прекъсне ред, когато дължината на реда надвишава PCTTHRESHOLD) VERFLOW TABLESPACE ... (посочете пространството за таблица, където ще се съхранява втората част на реда) MAPPING TABLE; (предизвиква създаване на таблица за съпоставяне, необходима при създаване на растерен индекс на IOT)

Таблицата за съпоставяне картографира физическите ROWID на индекса към логически ROWID в IOT. IOT използва логически ROWID за управление на достъпа до таблица по индекс, тъй като физическите ROWID се променят всеки път, когато данни се добавят или премахват от таблицата. За да различите IOT от други индекси, потърсете изгледа USER_INDEXES, като използвате колоната pct_direct_access. Само IOT ще има стойност, различна от NULL за тази колона.

Индекси на домейни на приложения

Oracle предоставя разширяемо индексиране за приспособяване на индекси към сложни типове данни като документи, пространствени данни, изображения и видеоклипове и за използване на специализирани техники за индексиране.

С разширяемо индексиране можете да капсулирате специфични за приложението рутинни процедури за управление на индекси като тип индекс обект на схема и дефинирайте индекс на домейн (специфичен за приложението индекс) на колони на таблица или атрибути от тип обект. Разширяемото индексиране също така осигурява ефективна обработка на специфичен за приложението оператор с.

Приложният софтуер, наречен cartridge д, контролира структурата и съдържанието на индекс на домейн. Сървърът на Oracle взаимодейства с приложението за изграждане, поддръжка и търсене в индекса на домейна. Самата структура на индекса може да се съхранява в базата данни на Oracle като индексно организирана таблица или външно като файл.

Използване на индекси на домейни

Индексите на домейни се изграждат с помощта на логиката на индексиране, предоставена от потребителски дефиниран тип индекс. Типът индекс осигурява ефективен механизъм за достъп до данни, които удовлетворяват определени операторни предикати. Обикновено дефинираният от потребителя тип индекс е част от опция на Oracle, като опцията Spatial.

Например, SpatialIndextype позволява ефективно търсене и извличане на пространствени данни, които се припокриват с дадено ограничаващо поле.

Касетата определя параметрите, които можете да посочите при създаването и поддържането на индекса на домейна. По подобен начин характеристиките на производителността и съхранението на индекса на домейна са представени в документацията на конкретната касета.

Досега разгледахме различни типове индекси в oracle с пример, нека сега да проверим как да ги променяме/пускаме/пресъздаваме

Как да създадете отново индексите/индекса за възстановяване в oracle

Можем да използваме израза ALTER INDEX ... REBUILD, за да реорганизираме или уплътним съществуващ индекс или да променим характеристиките му за съхранение

Инструкцията REBUILD използва съществуващия индекс като основа за новия.

ALTER INDEX... REBUILD обикновено е по-бързо от изпускането и повторното създаване на индекс.

Той чете всички индексни блокове, използвайки многоблоков I/O, след което изхвърля разклонените блокове.

Друго предимство на този подход е, че старият индекс все още е наличен за заявки, докато възстановяването е в ход.

Промяна на индекса  <име на индекс>  повторно изграждане;Промяна на индекс  <име на индекс>  повторно изграждане  пространство за таблици <име>;

Как да пишем изявления, които избягват използването на индекси

  • Можете да използвате съвета за оптимизатор NO_INDEX, за да дадете на CBO максимална гъвкавост, като същевременно забраните използването на определен индекс.
  • Можете да използвате FULL намек, за да принудите оптимизатора да избере пълно сканиране на таблица вместо сканиране на индекс.
  • Можете да използвате съветите INDEX, INDEX_COMBINE или AND_EQUAL, за да принудите оптимизатора да използва един индекс или набор от изброени индекси вместо друг.

Как да събирам статистически данни за индекси

Индексната статистика се събира с помощта на оператора ANALYZE INDEX или dbms_stats.

Наличните опции са ИЗЧИСЛЯВАНЕ/ПРОЦЕНЯВАНЕ НА СТАТИСТИКАТА или ВАЛИДАЙТЕ СТРУКТУРАТА.

От 10g нататък, когато се създаде индексът, изчисляването на статистическите данни се извършва автоматично

Когато използва структурата за валидиране, Oracle попълва изгледа INDEX_STATS със статистически данни, свързани с анализирания индекс. Статистиката съдържа броя на листовите редове и блоковете (LF_ROWS, LF_BLKS), броя на разклонените редове и блоковете (BR_ROWS, BR_BLKS), броя на изтритите листови редове (DEL_LF_ROWS), използваното пространство (USED_SPACE), броя на отделните клавиши (DISTINCT_KEYS) и т.н. Тези статистически данни могат да се използват, за да се определи дали индексът трябва да бъде възстановен или не

Как Oracle решава за използването на индекс?

Oracle автоматично решава дали индексът трябва да се използва от машината на оптимизатора.

Oracle решава дали да използва индекс или не в зависимост от заявката.

Oracle може да разбере дали използването на индекс ще подобри производителността в дадената заявка. Ако Oracle смята, че използването на индекс ще подобри производителността, той ще използва индекса, в противен случай ще игнорира индекса.

Нека   разберем с този пример

Имаме таблица emp   която съдържа emp_name, salary,dept_no,emp_no,date_of_joining и имаме индекс на emp_name

Заявка 1

изберете * от emp , където emp_name ='John';

Горната заявка ще използва индекса, тъй като се опитваме да получим информация за emp въз основа на името.

Заявка 2

изберете * от emp;

Горната заявка няма да използва индекса, тъй като се опитваме да намерим всички редове в таблицата и нямаме  клауза where в заявката

Заявка 3

изберете * от emp, където dept_no =5;

Горната заявка няма да използва индекса, тъй като клаузата where не избира колоната , която има индекс

Заявка 4

изберете * от emp, където substr(emp_name,1,4) =’XYZW’;

Горната заявка няма да използва индекса, тъй като клаузата where използва функцията в колоната и нямаме функционален индекс на emp_name

Как да създадете или възстановите индекса онлайн?

Oracle се използва за заключване на таблицата, върху която се създава индекс, по време на процеса на създаване в по-стари версии. Това прави таблицата недостъпна за манипулиране на данни по време на създаването на индекса.

Сега с 8i, Oracle въведе онлайн повторно изграждане на индекса, при което Oracle не заключва таблицата, върху която се изгражда индекс.

Онлайн индексирането се осигурява чрез ключовата дума ОНЛАЙН.

СЪЗДАВАНЕ <УНИКАЛНО|НЕ УНИКАЛНО>  ИНДЕКС <име_индекс>ВКЛЮЧЕНО <име_на_таблица> (<име_на_колона>,<име_на_колона>…)PCTFREE <цяло число>TABLESPACE Онлайн;Променете индекса <име на_индекс> повторно изграждане онлайн;
>

По принцип, с онлайн възстановяване, Oracle заключва таблицата в началото и края на създаването на индекса. Позволява транзакции между тях. Механизмът е доста подобрен с 11g и 12c

Какви са недостатъците на  Индексите

Индексите повишават производителността на избрана заявка, те също могат да намалят ефективността на манипулирането на данни.

Много индекси на таблица могат да забавят драстично INSERTS и DELETES

Колкото повече са индексите в таблицата, толкова повече време ще отнеме вмъкването и изтриването.

По същия начин всяка промяна в индексирана колона ще изисква промяна в индекса.

Затова трябва много внимателно да изберем индекса и да премахнем, които не се използват.

Въпреки че допълнителното пространство, заето от индексите, също е съображение, може да няма голямо значение, тъй като цената за съхранение на данни е намаляла значително.

Какво е неизползваемите индекси

Неизползваем индекс се игнорира от оптимизатора при вземане на решение за обяснения на плана

Той също не се поддържа от DML, т.е. актуализиране, вмъкване, изтриване дали актуализирането на индекса

Може да има няколко причини индексът да е в неизползваемо състояние. Направихте повторното изграждане на таблицата, но не възстановихте индекса, тогава индексът ще бъде в неизползваемо състояние. Друга причина да направите индекс неизползваем е да подобрите производителността на групово натоварване. Друга причина може да е, че оптимизаторът избира грешен индекс всеки път и времето е от решаващо значение, така че може да решите да го направите неизползваем

Неизползваем индекс или индексен дял трябва да бъде възстановен или изхвърлен и създаден отново, преди да може да се използва. Отрязването на таблица прави неизползваемия индекс валиден.

Започвайки с Oracle Database 11g Release 2, когато направите съществуващ индекс неизползваем, неговият индексен сегмент отпада.

Функционалността на неизползваемите индекси зависи от настройката на параметъра за инициализация SKIP_UNUSABLE_INDEXES.

Когато SKIP_UNUSABLE_INDEXES е TRUE (по подразбиране), тогава:

DML операторите срещу таблицата продължават, но неизползваемите индекси не се поддържат.

DML изразите завършват с грешка, ако има някакви неизползваеми индекси, които се използват за налагане на ограничението UNIQUE.

За неразделени индекси, оптимизаторът не взема предвид никакви неизползваеми индекси, когато създава план за достъп за оператори SELECT. Единственото изключение е, когато индексът е изрично посочен с подсказката INDEX().

Когато SKIP_UNUSABLE_INDEXES е FALSE, тогава:

Ако има неизползваеми индекси или индексни дялове, всички DML изрази, които биха довели до актуализиране на тези индекси или индексни дялове, се прекратяват с грешка.

За оператори SELECT, ако има неизползваем индекс или неизползваем индексен дял, но оптимизаторът не избере да го използва за плана за достъп, операторът продължава. Ако обаче оптимизаторът реши да използва неизползваемия индекс или неизползваемия индексен дял, операторът завършва с грешка.

Изгледи на речник с данни за  индекси

DBA_INDEXES ALL_INDEXES USER_INDEXES DBA изглед описва индекси на всички таблици в базата данни. ВСИЧКИ изглед описва индекси на всички таблици, достъпни за потребителя. Изгледът USER е ограничен до индекси, собственост на потребителя. Някои колони в тези изгледи съдържат статистически данни, генерирани от пакета DBMS_STATS или израза ANALYZE.
DBA_IND_COLUMNS ALL_IND_COLUMNS

USER_IND_COLUMNS

Тези изгледи описват колоните от индекси на таблици. Някои колони в тези изгледи съдържат статистически данни, генерирани от пакета DBMS_STATS или израза ANALYZE.
DBA_IND_EXPRESSIONS ALL_IND_EXPRESSIONS

USER_IND_EXPRESSIONS

Тези изгледи описват изразите на базирани на функции индекси в таблици.
DBA_IND_STATISTICS ALL_IND_STATISTICS

USER_IND_STATISTICS

Тези изгледи съдържат статистически данни за оптимизатор за индекси.

как да намерите индекси в таблица

set pagesize 50000 verify off echo offcol table_name head 'Table Name' format a20col index_name head 'Index Name' format a25col column_name head 'Column Name' format a30break on table_name на index_nameselect     table_name, ndpperme_om table_name, ndpperme_om table_name, ndpperme_om ')подреждане по име_на_таблица, име_на_индекс, позиция_на_колона/

Как да определим размера на индекса

Размер на INDEX изберете segment_name,sum(bytes)/1024/1024/1024 като "SIZE in GB" от user_segments, където segment_name='INDEX_NAME' група от segment_name;ИЛИ изберете собственик,segment_name,sum(bytes)/1024/1024/1024 като "SIZE in GB" от dba_segments, където owner='SCHEMA_NAME' и segment_name='INDEX_NAME' група по собственик,segment_name; Списък с размери на всички ИНДЕКСИ на ПОТРЕБИТЕЛ изберете ime_segment,sum(bytes)/1024/1024/1024 като "SIZE in GB" от user_segments, където segment_type='INDEX' група от segment_name подреждане по описание на "SIZE in GB";ИЛИ изберете собственик,segment_name,sum(bytes)/1024 /1024/1024 като „SIZE в GB“ от dba_segments, където owner='SCHEMA_NAME' и segment_type='INDEX' група по собственик, наименование на сегмента подреждане по „SIZE in GB“ desc;Сбор от размери на всички индекси изберете owner,sum(bytes)/1024/1024/1024 като "SIZE in GB" от dba_segments, където owner='SCHEMA_NAME' и segment_type='INDEX' група по собственик;

Как да определим индекса  определение

задайте дълго 4000select dbms_metadata.get_ddl('INDEX','<ИНДЕКС име>','<ИНДЕКС СОБСТВЕНИК') от двойно;

Как да определим статистиката на индекса

set pages 250set linesize 100set verify offcol table_name format a24 heading 'TABLE NAME'col index_name format a23 heading 'INDEX NAME'col u format a1 heading 'U'col blevel format 0 heading 'BL'col leaf_blocks'9AF heading 9 |BLOCKS'col different_keys format 9999990 heading 'DISTINCT|KEYS'col avg_leaf_blocks_per_key format 9999990 heading 'LEAF|BLKS|/KEY'col avg_data_blocks_per_key format 9999999990 заглавие 'DISTINCT|KEYS'col avg_leaf_blocks_per_key format 9999990 heading 'LEAF|BLKS|/KEY'col avg_data_blocks_per_key format 9999999999999999999999999999990 'UNIQUE', 'U', null ) u,blevel, leaf_blocks, different_keys,avg_leaf_blocks_per_key, avg_data_blocks_per_keyfrom sys.dba_indexeswhere table_owner като upper('&owner')и table_name като upper('&owner')и table_name' като upper_name('индекс_на_таблица')order_; /предварително> 

 Сродни статии

външни таблици в Oracle :Вижте тази публикация за информация относно използването на външните таблици в Oracle с пример, как да създадете външна таблица, как да я използвате
Oracle Създаване на таблица :Таблиците са основната единица данни съхранение в база данни на Oracle. разглеждаме как да използвате командата за създаване на таблица на Oracle за създаване на таблица с външен ключ /първичен ключ
изявление за създаване на пространство за таблици на oracle:Тази статия за това как да създадете пространство за таблици в oracle, различни характеристики, свързани с нея и различни изрази за създаване на пространство за таблици
Намерете състоянието на индексите и присвоените колони за таблица
Виртуален индекс в Oracle:Какво е виртуален индекс в Oracle? Употреби, ограничения, предимства и как да се използват за проверка за обяснение на план в базата данни на Oracle, скрит параметър _USE_NOSEGMENT_INDEXES
Клъстериращ фактор на Oracle Index:Как се изчислява коефициентът на клъстериране на Oracle Index и как влияе върху плана за обяснение
Раздел на Oracle Индекс :Разбиране на индекса на дялове на Oracle, Какво представляват глобалните неразделени индекси?, Какво представляват локални индекси с префикс, локален индекс без префикс

Препоръчани курсове

Ето хубавия курс на Udemy за Oracle SQL
Oracle-Sql-Step-by-step :Този курс обхваща основния sql, присъединяването, Създаването на таблици и промяната на структурата им, Създаване на изглед, Обединение, Обединение - всичко и много други неща . Страхотен курс и задължителен курс за SQL начинаещи
Пълният курс за сертифициране на Oracle SQL :Това е добър курс за всеки, който иска да бъде готов за работа за SQL разработчици. Приятно обяснен курс
Oracle SQL Developer:Основни неща, съвети и трикове :Инструментът за разработчици на Oracle Sql се използва от много разработчици. Този курс ни дава трикове и уроци за това как ефективно да го използваме и да станем продуктивен sql разработчик
Майсторски клас за настройка на производителността на Oracle 2020 г. :Настройката на производителността е едно от критичните и най-търсените умения. Това е добър курс, за да научите за него и да започнете да правите настройка на производителността на sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извлечете данни от курсора в Oracle, използвайки For Loop

  2. Функция SYSDATE в Oracle

  3. Как можем да определим размера на изходния параметър в съхранената процедура?

  4. Ръчно добавяне на нов RAC екземпляр

  5. 3 начина за проверка на типа данни на колона в Oracle