×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.8.7. Индексы для выражений

Столбец индекса не обязательно должен быть столбцом исходной таблицы; это может быть функция или скалярное выражение, вычисляемое на основе одного или нескольких столбцов таблицы. Данная функциональность полезна для обеспечения быстрого доступа к таблицам на основе результатов вычислений.

Например, распространенным способом выполнения сравнений без учета регистра является использование lower функции:

SELECT * FROM test1 WHERE lower(col1) = 'value';

Данный запрос может использовать индекс, если он был определен для результата lower(col1) функции:

CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));

Если бы данный индекс был объявлен как UNIQUE, это предотвратило бы создание строк, чьи col1 значения различаются только регистром, а также строки, в которых col1 значения фактически идентичны. Таким образом, индексы по выражениям могут использоваться для обеспечения ограничений, которые нельзя определить как простые ограничения уникальности.

Другой пример: если часто выполняются такие запросы, как:

SELECT * FROM people WHERE (first_name || ' ' || last_name) = 'John Smith';

то имеет смысл создать индекс следующего вида:

CREATE INDEX people_names ON people ((first_name || ' ' || last_name));

Синтаксис CREATE INDEX команды обычно требует заключать выражения индекса в скобки, как показано во втором примере. Скобки можно опустить, когда выражение представляет собой просто вызов функции, как в первом примере.

Обслуживание индексов по выражениям обходится относительно дорого, так как производные выражения должны вычисляться при каждой вставке строки и обновлении без использования механизма HOT. Тем не менее выражения индекса не не вычисляются повторно при поиске по индексу, так как они уже сохранены в нем. В обоих приведенных выше примерах система рассматривает запрос как WHERE indexedcolumn = 'constant' таким образом, скорость поиска эквивалентна любому другому простому запросу с использованием индекса. Таким образом, индексы по выражениям полезны в тех случаях, когда скорость выборки данных важнее скорости вставки и обновления записей.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению