[PostgreSQL: Documentation: 16: CREATE INDEX](https://www.postgresql.org/docs/current/sql-createindex.html): рекомендуется ознакомиться с официальной документацией для более глубокого понимания команды `CREATE INDEX` и всех доступных опций.
**Что нужно для создания индекса?**
- **Соберите статистику нагрузки на БД**. **Работайте только с продуктовым окружением**: тестовые окружения не всегда отражают реальность.
- Используйте [[pg_stat_statements|pg_stat_statements]] для анализа запросов.
- Анализируйте [[Таблица статистик pg_stats|pg_stats]]: важно понимать, как планировщик БД строит план выполнения запроса.
- Инструмент pgBadge можно применять с осторожностью, так как он собирает данные из логов, в которые попадают не все запросы.
- **Примеры запросов с параметрами**: сохраняйте примеры для проверки оптимизаций.
- **Сбор дополнительной статистики**: при необходимости вручную собирайте более полные данные, так как по умолчанию PostgreSQL использует для анализа только 30k строк, что может давать неточную картину.
- **Учитывайте блокировку таблицы**: добавление индекса блокирует таблицу, поэтому это нужно учитывать при планировании операций.
- Используйте [[Профилирование запросов в PostgreSQL|EXPLAIN]]: для анализа статистики распределения данных и проверки эффективности выполнения запросов.
**Полезные советы:**
- [[../Селективность колонки|Селективность колонки]]: чем выше селективность, тем эффективнее работает индекс.