Содержит все гипотетические (what-if) индексы пропуска данных, определённые в текущем сеансе. См. CREATE HYPOTHETICAL INDEX и EXPLAIN WHATIF.
Содержимое привязано к сеансу: каждое соединение видит только свои гипотетические индексы, а если в текущем сеансе не был создан ни один индекс, таблица пуста.
Текущие (database, table) определяются по UUID во время выполнения запроса, поэтому они отражают RENAME TABLE, а строки для удалённых таблиц скрываются автоматически.
Столбцы
database(String) — Имя базы данныхtable(String) — Имя таблицыname(String) — Имя индексаtype(String) — Тип индекса (minmax, set, bloom_filter и т. д.)type_full(String) — Выражение типа индекса с аргументами, например bloom_filter(0.01)expression(String) — Выражение индексаgranularity(UInt64) — Гранулярность индекса
Пример
CREATE HYPOTHETICAL INDEX i1 ON t (b) TYPE bloom_filter(0.01) GRANULARITY 1;
CREATE HYPOTHETICAL INDEX i2 ON t (b) TYPE bloom_filter(0.001) GRANULARITY 1;
SELECT database, table, name, type, type_full, expression, granularity
FROM system.hypothetical_indexes;┌─database─┬─table─┬─name─┬─type─────────┬─type_full───────────┬─expression─┬─granularity─┐
│ default │ t │ i1 │ bloom_filter │ bloom_filter(0.01) │ b │ 1 │
│ default │ t │ i2 │ bloom_filter │ bloom_filter(0.001) │ b │ 1 │
└──────────┴───────┴──────┴──────────────┴─────────────────────┴────────────┴─────────────┘type — это имя базового типа, а type_full содержит аргументы, поэтому пользователи могут различать параметризованные варианты, такие как bloom_filter(0.01) и bloom_filter(0.001).