INDEX в Oracle SQL — как ускорить запросы с помощью индексов

🟢 INDEX в Oracle SQL. Введение

Если ваш запрос к таблице становится медленным — скорее всего, пора познакомиться с INDEX. Индексы в Oracle SQL позволяют ускорить поиск, сортировку и фильтрацию данных, особенно в больших таблицах.

Оператор INDEX обычно используется в CREATE INDEX, DROP INDEX, а также участвует неявно в оптимизации запросов через план выполнения (EXPLAIN PLAN).


🔤 Написание

sql
CREATE INDEX имя_индекса ON таблица(столбец[, ...]);

🔄 Где используется

  • Ускорение SELECT с условиями WHERE

  • Поддержка уникальности (в UNIQUE INDEX)

  • Оптимизация JOIN и сортировки

  • Повышение производительности в OLTP и аналитике

  • В планах выполнения для анализа запросов


🧪 10 Примеров использования

1️⃣ Создание простого индекса

sql
CREATE INDEX idx_emp_lastname ON employees(last_name);

2️⃣ Индекс по нескольким столбцам

sql
CREATE INDEX idx_emp_dept_sal ON employees(department_id, salary);

3️⃣ Уникальный индекс (автоматически создаётся с PRIMARY KEY)

sql
CREATE UNIQUE INDEX idx_unique_email ON users(email);

4️⃣ Удаление индекса

sql
DROP INDEX idx_emp_lastname;

5️⃣ Проверка использования индекса

sql
EXPLAIN PLAN FOR
SELECT * FROM employees WHERE last_name = 'King';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

6️⃣ Индекс в сортировке

sql
-- индекс помогает ускорить ORDER BY
SELECT * FROM products ORDER BY price;

7️⃣ Функциональный индекс

sql
CREATE INDEX idx_upper_lastname
ON employees(UPPER(last_name));

8️⃣ BITMAP INDEX — для низкой кардинальности

sql
CREATE BITMAP INDEX idx_gender ON employees(gender);

9️⃣ Индекс на выражение (например, даты)

sql
CREATE INDEX idx_year_hire
ON employees(TO_CHAR(hire_date, 'YYYY'));

🔟 Просмотр всех индексов пользователя

sql
SELECT index_name, table_name
FROM user_indexes
WHERE table_name = 'EMPLOYEES';

🧩 Заключение

Оператор INDEX помогает Oracle SQL работать эффективно и быстро, особенно с большими объёмами данных. Грамотно созданный индекс может в разы ускорить выполнение запроса.

💡 Запомни:

  • INDEX не хранит данные, а указывает, где их искать

  • Используется для ускорения поиска, сортировки, фильтрации

  • Может быть уникальным, составным, функциональным или BITMAP

  • Не злоупотребляй: лишние индексы замедляют INSERT/UPDATE/DELETE


🔜 Следующая статья:

IN в Oracle SQL — 50 примеров проверки в списке


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии