Ответ
Частичный индекс (Partial Index) — это индекс, построенный не на всей таблице, а только на подмножестве строк, удовлетворяющих заданному условию (WHERE). Это экономит место на диске и ускоряет запросы, которые фильтруют данные по этому условию.
Как работать из Java: Прямой поддержки в Java нет, так как это функция СУБД (например, PostgreSQL, SQLite). Работа осуществляется через SQL-запросы или настройки ORM.
1. Через нативный SQL (JDBC):
Statement stmt = connection.createStatement();
stmt.executeUpdate(
"CREATE INDEX idx_active_orders ON orders(status) WHERE status = 'ACTIVE'"
);
2. Через Hibernate (аннотации):
@Entity
@Table(name = "orders")
@org.hibernate.annotations.Table(
appliesTo = "orders",
indexes = @org.hibernate.annotations.Index(
name = "idx_active_orders",
columnNames = "status",
where = "status = 'ACTIVE'" // Условие для частичного индекса
)
)
public class Order {
@Id
private Long id;
private String status;
// ...
}
Преимущества:
- Экономия ресурсов: Индекс меньше по размеру и быстрее обновляется.
- Производительность: Ускорение запросов, использующих то же условие, что и индекс.
Недостатки:
- Специфичность: Индекс полезен только для запросов с подходящим предикатом.
- Зависимость от СУБД: Синтаксис
WHEREвCREATE INDEXподдерживается не всеми базами данных.