Как создавать индексы в PostgreSQL

Как видите, база данных «Тест» указана в опции База данных

Индексы — это специализированные поисковые таблицы, используемые механизмами поиска в банках данных для ускорения результатов запроса. Индекс — это ссылка на информацию в таблице. Например, если имена в контактной книге не отсортированы по алфавиту, вам придется спускаться по каждой строке и выполнять поиск по каждому имени, прежде чем вы достигнете определенного номера телефона, который ищете. Индекс ускоряет выполнение команд SELECT и фраз WHERE, выполняя ввод данных в командах UPDATE и INSERT. Независимо от того, вставлены или удалены индексы, это не влияет на информацию, содержащуюся в таблице. Индексы могут быть особенными, так же как ограничение UNIQUE помогает избежать записей реплик в поле или наборе полей, для которых существует индекс.

Общий синтаксис

Для создания индексов используется следующий общий синтаксис.

>> CREATE INDEX index_name ON table_name (column_name);

Чтобы начать работу с индексами, откройте pgAdmin Postgresql на панели приложения. Вы найдете вариант «Серверы», отображаемый ниже. Щелкните этот параметр правой кнопкой мыши и подключите его к базе данных.

Как видите, база данных «Тест» указана в опции

Как видите, база данных «Тест» указана в опции «Базы данных». Если у вас его нет, щелкните правой кнопкой мыши «Базы данных», перейдите к опции «Создать» и назовите базу данных в соответствии с вашими предпочтениями.

Разверните опцию «Схемы», и вы найдете там перечисленную опцию

Разверните опцию «Схемы», и вы найдете там перечисленную опцию «Таблицы». Если у вас его нет, щелкните его правой кнопкой мыши, перейдите к «Создать» и выберите параметр «Таблица», чтобы создать новую таблицу. Поскольку мы уже создали таблицу emp, вы можете увидеть ее в списке.

Попробуйте выполнить запрос SELEC

Попробуйте выполнить запрос SELECT в редакторе запросов, чтобы получить записи таблицы emp, как показано ниже.

>> SELECT * FROM public.emp ORDER BY “id” ASC;

Попробуйте выполнить запрос SELECT

Следующие данные будут в таблице emp.

Следующие данные будут в таблице emp

Создание одностолбцовых индексов

Разверните таблицу emp, чтобы найти различные категории, например, столбцы, ограничения, индексы и т.д. Щелкните правой кнопкой мыши «Индексы», перейдите к опции «Создать» и нажмите «Индекс», чтобы создать новый индекс.

Читайте также:  Что такое DBaaS? Объяснение базы данных как услуги

Создайте индекс для данной таблицы ’emp’ или конечного отображения

Создайте индекс для данной таблицы «emp» или конечного отображения, используя диалоговое окно Index. Здесь есть две вкладки: «Общие» и «Определение». На вкладке «Общие» вставьте конкретный заголовок для нового индекса в поле «Имя». Выберите «табличное пространство», в котором будет храниться новый индекс, используя раскрывающийся список рядом с «Табличным пространством». Как и в области «Комментарии», сделайте здесь индексные комментарии. Чтобы начать этот процесс, перейдите на вкладку «Определение».

Здесь укажите «Метод доступа», выбрав тип индекса

Здесь укажите «Метод доступа», выбрав тип индекса. После этого, чтобы создать свой индекс как «Уникальный», там есть несколько других вариантов. В области «Столбцы» нажмите на знак «+» и добавьте имена столбцов, которые будут использоваться для индексации. Как видите, мы применили индексирование только к столбцу «Телефон». Для начала выберите раздел SQL.

На вкладке SQL отображается команда SQL

На вкладке SQL отображается команда SQL, созданная вашими входными данными в диалоговом окне «Индекс». Нажмите кнопку «Сохранить», чтобы создать индекс.

Снова перейдите к опции «Таблицы» и перейдите к таблице

Снова перейдите к опции «Таблицы» и перейдите к таблице «emp». Обновите опцию «Индексы», и вы найдете в нем только что созданный индекс «index_on_phone».

Теперь мы выполним команду EXPLAIN SELECT

Теперь мы выполним команду EXPLAIN SELECT, чтобы проверить результаты для индексов с предложением WHERE. Это приведет к следующему выводу, в котором говорится: «Seq Scan on emp.» Вы можете задаться вопросом, почему это произошло, когда вы используете индексы.

Причина: планировщик Postgres может отказаться от индекса по разным причинам. Стратег большую часть времени принимает оптимальные решения, даже если причины не всегда ясны. Это нормально, если поиск по индексу используется в некоторых запросах, но не во всех. Записи, возвращаемые из любой таблицы, могут различаться в зависимости от фиксированных значений, возвращаемых запросом. Из-за этого сканирование последовательности почти всегда происходит быстрее, чем сканирование индекса, что указывает на то, что, возможно, планировщик запросов был прав, определив, что стоимость выполнения запроса таким образом снижается.

Из-за этого сканирование последовательности почти всегда происходит быстрее

Создать несколько индексов столбцов

Чтобы создать индексы с несколькими столбцами, откройте оболочку командной строки и рассмотрите следующую таблицу «ученик», чтобы начать работу с индексами с несколькими столбцами.

>> SELECT * FROM Student;

Чтобы создать индексы с несколькими столбцами, откройте оболочку командной строки

Напишите в нем следующий запрос CREATE INDEX. Этот запрос создаст индекс с именем new_index в столбцах sname и age таблицы student.

>> CREATE INDEX new_index ON Student (sname, age);

Теперь мы перечислим свойства и атрибуты только что созданного индекса new_index с помощью команды \ d. Как вы можете видеть на картинке, это индекс типа btree, который был применен к столбцам sname и age.

>> \d new_index;

Создать УНИКАЛЬНЫЙ индекс

Чтобы создать уникальный индекс, предположим, что следующая таблица emp.

>> SELECT * FROM emp;

Чтобы создать уникальный индекс, предположим, что следующая таблица emp

Выполните запрос CREATE UNIQUE INDEX в оболочке, после чего укажите имя индекса empind в столбце name таблицы emp. В выходных данных вы можете видеть, что уникальный индекс не может быть применен к столбцу с повторяющимися значениями «name».

>> CREATE unique INDEX empind ON emp (name);

Обязательно применяйте уникальный индекс только к столбцам, которые не содержат дубликатов. Для таблицы emp вы можете предположить, что только столбец id содержит уникальные значения. Итак, мы применим к нему уникальный индекс.

>> CREATE unique INDEX empind ON emp (id);

Ниже приведены атрибуты уникального индекса.

>> \d empid;

Drop Index

Оператор DROP используется для удаления индекса из таблицы.

>> DROP INDEX empind;

Заключение

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

  • Индексы не должны сбрасываться для небольших таблиц.
  • Таблицы с большим количеством крупномасштабных пакетных операций обновления / обновления или добавления / вставки.
  • Для столбцов со значительным процентом значений NULL индексы не могут быть беспорядочными.
  • Продажа.
  • Следует избегать индексации столбцов с регулярными манипуляциями.
Оцените статью
bestprogrammer.ru
Добавить комментарий