TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2228 1.6K
Функциональные индексы
(продолжение предыдущего поста)

Что такое функциональный индекс?

* Обычный индекс говорит: «Я помогу тебе быстрее найти эту колонку».
* Функциональный индекс говорит: «Я помогу тебе быстрее найти результат этой функции».

Пример:

-- Обычный фильтр (медленно)
WHERE EXTRACT(YEAR FROM order_date) = 2023;

-- С функциональным индексом
CREATE INDEX idx_order_year ON orders ((EXTRACT(YEAR FROM order_date)));

Теперь функция YEAR() не вычисляется для каждой строки.
Система просто ищет значение, как в словаре.

Почему это важно?
Вы постоянно используете такие запросы:

* LOWER(email) → поиск без учёта регистра
* SUBSTRING(code, 1, 4) → частичное совпадение
* price * quantity → вычисляемые столбцы
* EXTRACT(MONTH FROM signup_date) → фильтрация по месяцу

Угадайте что? Все они работают медленно без функционального индекса.

Когда следует использовать?

* Вы применяете фильтры к вычисляемым значениям
* Выполняете операции с датами, строками или вычислениями в столбцах
* Ваше приложение ориентировано на чтение данных
* Вы хотите, чтобы запросы выполнялись менее чем за 100 мс

Важно запомнить:

1. Функциональные индексы хранят результат функции
2. Они избегают повторного вычисления при каждом запросе
3. Делают медленные фильтры молниеносными
4. Но... они занимают место на диске и работают только с детерминированными функциями

Сохраняйте спокойствие и изучайте SQL!
Telegram METANIT.COM Функциональные индексы (описание в следующем посте)
  • ❤‍🔥 12
  • 👍 7
  • 👏 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →