Создание одноколоночного индекса
На этом шаге вы создадите образец таблицы с именем users, а затем создадите индекс по одному столбцу email. Индексы имеют решающее значение для повышения производительности запросов к базе данных, особенно при работе с большими таблицами.
Сначала подключитесь к базе данных PostgreSQL от имени пользователя postgres:
sudo -u postgres psql
Теперь создайте таблицу users. Выполните следующую команду SQL:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP
);
Эта команда создает таблицу с именем users со столбцами id, username, email и created_at. Столбец id является первичным ключом и автоматически увеличивается.
Далее вставьте некоторые образцы данных в таблицу users. Выполните следующие команды SQL:
INSERT INTO users (username, email, created_at) VALUES
('john_doe', 'john.doe@example.com', NOW()),
('jane_smith', 'jane.smith@example.com', NOW()),
('peter_jones', 'peter.jones@example.com', NOW()),
('mary_brown', 'mary.brown@example.com', NOW()),
('alice_wilson', 'alice.wilson@example.com', NOW()),
('bob_davis', 'bob.davis@example.com', NOW()),
('carol_garcia', 'carol.garcia@example.com', NOW()),
('david_martinez', 'david.martinez@example.com', NOW()),
('emma_anderson', 'emma.anderson@example.com', NOW()),
('frank_taylor', 'frank.taylor@example.com', NOW());
-- Insert additional rows to make the table large enough for index usage
INSERT INTO users (username, email, created_at)
SELECT
'user_' || generate_series(1, 1000),
'user' || generate_series(1, 1000) || '@example.com',
NOW();
Теперь вы вставили более 1000 строк данных в таблицу users. Этот увеличенный набор данных поможет более эффективно продемонстрировать использование индексов, поскольку PostgreSQL обычно использует индексы, когда они обеспечивают преимущество в производительности по сравнению со сканированием всей таблицы.
Чтобы ускорить запросы по столбцу email, создайте индекс по столбцу email. Выполните следующую команду SQL:
CREATE INDEX idx_users_email ON users (email);
Эта команда создает индекс с именем idx_users_email по столбцу email таблицы users.
Чтобы убедиться, что индекс был создан, вы можете использовать команду \di в psql. Выполните следующую команду:
\di
В выводе вы должны увидеть список индексов, включая idx_users_email.
Наконец, выйдите из оболочки psql, набрав:
\q