SELECT count( * )
FROM tickets
WHERE passenger_name = 'IVAN IVANOV';
count
-------
200
(1 строка)
Время: 373,232 мс
Показатели времени, полученные на вашем компьютере, конечно, будут отличаться
от значений, приведенных в книге, и — возможно — значительно. Эти показатели
нужно рассматривать лишь как качественные ориентиры.
Создадим индекс по столбцу passenger_name, при этом никакого суффикса в имени
индекса использовать не будем, поскольку его наличие не является обязательным:
CREATE INDEX passenger_name
ON tickets ( passenger_name );
CREATE INDEX
Время: 4023,408 мс
Посмотрим описание нового индекса:
\d tickets
...
Индексы:
...
"passenger_name" btree (passenger_name)
Теперь выполним ту же выборку из таблицы tickets.
244
8.1. Общая информация
SELECT count( * )
FROM tickets
WHERE passenger_name = 'IVAN IVANOV';
count
-------
200
(1 строка)
Время: 17,660 мс
Вы видите, что время выполнения выборки при наличии индекса оказалось значи-
тельно меньше.
Просмотреть список всех индексов в текущей базе данных можно командой
\di
или
\di+
Для удаления индекса используется команда:
DROP INDEX имя-индекса;
Давайте удалим созданный нами индекс для таблицы tickets:
DROP INDEX passenger_name;
DROP INDEX
Когда индекс уже создан, о его поддержании в актуальном состоянии заботится СУБД.
Конечно, следует учитывать, что это требует от СУБД затрат ресурсов и времени. Ин-
декс, созданный по столбцу, участвующему в соединении двух таблиц, может позво-
лить ускорить процесс выборки записей из таблиц. При выборке записей в отсорти-
рованном порядке индекс также может помочь, если сортировка выполняется по тем
столбцам, по которым индекс создан.
245
Глава 8. Индексы
Достарыңызбен бөлісу: |