Oracle Create Index

Oracle Create Index



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

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







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



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



За да заобиколим това, можем да използваме индекс на база данни.





Например, можем да създадем индекс в колоната с името на клиента, който ще позволи на системата от бази данни бързо да намери и извлече информация за конкретен клиент, използвайки името. Следователно, вместо машината на базата данни да преминава през всички редове и колони в таблицата, тя използва само индекса, за да търси информация за клиента.

В този урок ще научите как да използвате командата CREATE INDEX в базата данни на Oracle, за да инициализирате нов индекс.



Oracle Create Index Statement

Следното показва синтаксиса на оператора CREATE INDEX в бази данни на Oracle:

CREATE INDEX index_name
ON table_name (колона1, колона2, ...);

Горният синтаксис създава индекс с име index_name в таблицата с име table_name, използвайки посочените колони (колона1, колона2 и т.н.) като ключ за индекса.

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

В някои случаи обаче може да се наложи да създадете ръчно нов индекс за конкретна таблица.

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

Пример за създаване на индекс на Oracle

Да предположим, че имаме таблица, съдържаща информация за служителите, както е показано в резултата по-долу:

изберете first_name, last_name, salary, hire_date от EMPLOYEES;

Oracle Създаване на индекс за една колона

Да предположим, че искаме да създадем индекс, използвайки колоната first_name. Можем да изпълним заявка, както е показано:

създаване на индекс first_name_lookup на EMPLOYEES(FIRST_NAME);

Този оператор CREATE INDEX създава индекс с име first_name_lookup в таблицата EMPLOYEES, използвайки колоната FIRST_NAME като ключ за индекса. Този индекс може да се използва за подобряване на производителността на заявки, които търсят служители по техните имена.

След като създадем индекса, можем да го използваме за търсене на конкретен служител, както е показано:

ИЗБЕРЕТЕ first_name, last_name, salary, hire_date
ОТ служители
WHERE first_name = 'Уилям';

Резултат:

Без индекса first_name_lookup, системата от бази данни ще трябва да сканира цялата таблица EMPLOYEES, за да намери всички редове, където колоната FIRST_NAME е равна на „Уилям“. Въпреки това, с индекса на място, системата от бази данни може бързо да търси редовете в индекс, използвайки стойността „John“ като ключ и след това извличане на заявените редове от таблицата, което ще бъде много по-бързо.

Можете да видите стъпките, използвани при извършване на заявката с помощта на командата за обяснение на плана, както е показано:

обяснете план за SELECT first_name, last_name, salary, hire_date
ОТ служители
WHERE first_name = 'Уилям';

Резултатен план на заявката:

Пример 2 – Oracle Създаване на индекс с множество колони

По подобен начин можем да създадем индекс, състоящ се от повече от една колона в дадена таблица. Да предположим например, че искаме да създадем индекс, състоящ се от колоните first_name и last_name.

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

създаване на индекс multi_lookup на EMPLOYEES(FIRST_NAME, LAST_NAME);

Този оператор CREATE INDEX създава индекс с име multi_lookup в таблицата EMPLOYEES, използвайки колоните FIRST_NAME и LAST_NAME като ключ за индекса.

Веднъж създаден, можем да използваме този индекс, както е показано в примерната заявка, както е показано:

ИЗБЕРЕТЕ first_name, last_name, salary, hire_date
ОТ служители
WHERE first_name = 'William' AND last_name = 'Smith';

Резултатна стойност:

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

Заключение

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