DBAtlas · Атлас эксплуатации баз данных

Создать индекс

Oracle

CREATE INDEX customer_city_idx ON customer(city) ONLINE;

ONLINE строит его без блокировки таблицы. Для уникального используйте CREATE UNIQUE INDEX; для составного — (a, b).

PostgreSQL

CREATE INDEX CONCURRENTLY customer_city_idx ON customer(city);

CONCURRENTLY не блокирует запись в таблицу, но не может выполняться внутри блока транзакции и работает медленнее.

MySQL

CREATE INDEX customer_city_idx ON customer(city);
-- Lock-free: ... ALGORITHM=INPLACE, LOCK=NONE;

InnoDB добавляет большинство индексов онлайн; на больших таблицах разрешайте запись через LOCK=NONE.

SQL Server

CREATE NONCLUSTERED INDEX IX_customer_city
ON dbo.customer (city)
WITH (ONLINE = ON);

ONLINE — функция Enterprise. Для покрывающих столбцов используйте INCLUDE (col1, col2).

MongoDB

db.customer.createIndex({ city: 1 })
// Unique: { city: 1 }, { unique: true }
// Built in the background without blocking (default behavior in 4.2+)

1 — порядок по возрастанию, -1 — по убыванию. На больших коллекциях построение сначала на secondary снижает нагрузку.

Redis

# Not applicable (core). If RediSearch is present:
# FT.CREATE idx ON HASH PREFIX 1 customer: SCHEMA city TAG

Вторичные индексы появляются только с модулем RediSearch; в базовом Redis доступ — по ключу.

Открыть в DBAtlas →