mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-24 10:40:49 +00:00
unique
This commit is contained in:
parent
c4dad05b87
commit
4de473a7b7
@ -250,7 +250,7 @@ CREATE TABLE table_name
|
|||||||
s String,
|
s String,
|
||||||
...
|
...
|
||||||
INDEX a (u64 * i32, s) TYPE minmax GRANULARITY 3,
|
INDEX a (u64 * i32, s) TYPE minmax GRANULARITY 3,
|
||||||
INDEX b (u64 * length(s)) TYPE minmax GRANULARITY 4
|
INDEX b (u64 * length(s)) TYPE unique GRANULARITY 4
|
||||||
) ENGINE = MergeTree()
|
) ENGINE = MergeTree()
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
@ -263,10 +263,17 @@ SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234
|
|||||||
|
|
||||||
#### Available Types of Indices
|
#### Available Types of Indices
|
||||||
|
|
||||||
* `minmax` Stores extremes of specified expression (if the expression is `tuple`, then it stores extremes for each element of `tuple`), uses stored info for skipping blocks of data like primary key.
|
* `minmax`
|
||||||
|
Stores extremes of the specified expression (if the expression is `tuple`, then it stores extremes for each element of `tuple`), uses stored info for skipping blocks of the data like the primary key.
|
||||||
|
|
||||||
|
* `unique(max_rows)`
|
||||||
|
Stores unique values of the specified expression (no more than `max_rows` rows), use them to check if the `WHERE` expression is not satisfiable on a block of the data.
|
||||||
|
If `max_rows=0`, then there are no limits for storing values. `unique` without parameters is equal to `unique(0)`.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
INDEX sample_index (u64 * length(s)) TYPE minmax GRANULARITY 4
|
INDEX sample_index (u64 * length(s)) TYPE minmax GRANULARITY 4
|
||||||
|
INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE unique GRANULARITY 4
|
||||||
|
INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE unique(100) GRANULARITY 4
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ CREATE TABLE table_name
|
|||||||
s String,
|
s String,
|
||||||
...
|
...
|
||||||
INDEX a (u64 * i32, s) TYPE minmax GRANULARITY 3,
|
INDEX a (u64 * i32, s) TYPE minmax GRANULARITY 3,
|
||||||
INDEX b (u64 * length(s)) TYPE minmax GRANULARITY 4
|
INDEX b (u64 * length(s), i32) TYPE unique GRANULARITY 4
|
||||||
) ENGINE = MergeTree()
|
) ENGINE = MergeTree()
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
@ -254,13 +254,22 @@ SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234
|
|||||||
|
|
||||||
#### Доступные индексы
|
#### Доступные индексы
|
||||||
|
|
||||||
* `minmax` Хранит минимум и максимум выражения (если выражение - `tuple`, то для каждого элемента `tuple`), используя их для пропуска кусков аналогично первичному ключу.
|
* `minmax`
|
||||||
|
Хранит минимум и максимум выражения (если выражение - `tuple`, то для каждого элемента `tuple`), используя их для пропуска блоков аналогично первичному ключу.
|
||||||
|
|
||||||
Пример
|
* `unique(max_rows)`
|
||||||
|
Хранит уникальные значения выражения на блоке в количестве не более `max_rows`, используя их для пропуска блоков, оценивая выполнимость `WHERE` выражения на хранимых данных.
|
||||||
|
Если `max_rows=0`, то хранит значения выражения без ограничений. Если параметров не передано, то полагается `max_rows=0`.
|
||||||
|
|
||||||
|
|
||||||
|
Примеры
|
||||||
```sql
|
```sql
|
||||||
INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE minmax GRANULARITY 4
|
INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE minmax GRANULARITY 4
|
||||||
|
INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE unique GRANULARITY 4
|
||||||
|
INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE unique(100) GRANULARITY 4
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Конкурентный доступ к данным
|
## Конкурентный доступ к данным
|
||||||
|
|
||||||
Для конкурентного доступа к таблице используется мультиверсионность. То есть, при одновременном чтении и обновлении таблицы, данные будут читаться из набора кусочков, актуального на момент запроса. Длинных блокировок нет. Вставки никак не мешают чтениям.
|
Для конкурентного доступа к таблице используется мультиверсионность. То есть, при одновременном чтении и обновлении таблицы, данные будут читаться из набора кусочков, актуального на момент запроса. Длинных блокировок нет. Вставки никак не мешают чтениям.
|
||||||
|
Loading…
Reference in New Issue
Block a user