Как создать индекс в Amazon Redshift



Я пытаюсь создать индексы в Amazon Redshift, но я получил ошибку



create index on session_log(UserId);


UserId является целочисленным полем.

666   3  

3 ответов:

Если вы попытаетесь создать индекс (с именем) в таблице красного смещения:

create index IX1 on "SomeTable"("UserId");

Вы получите сообщение об ошибке

Произошла ошибка при выполнении команды SQL: создайте индекс IX1 на "SomeTable" ("UserId") Ошибка: SQL-команда "create index IX1 on "SomeTable" ("UserId") " не поддерживается в таблицах Redshift.

Это происходит потому, что, как и другие хранилища данных, Redshift использует столбчатое Хранилище , и в результате многие методы индексирования (например, добавление некластеризованных индексов), используемые в других СУБД, неприменимы.

Однако у вас есть возможность предоставить один ключ сортировки Для каждой таблицы, а также вы можете влиять на производительность с помощью ключа распределения для сегментирования данных и выбора соответствующих кодировок сжатия для каждого столбца, чтобы минимизировать затраты на хранение и ввод-вывод.

Например, в вашем случае вы можете использовать UserId в качестве ключа сортировки:

create table if not exists "SomeTable"
(
    "UserId" int,
    "Name" text
)
sortkey("UserId");

Возможно, вы захотите чтобы прочитать несколько праймеров , как эти

Redshift позволяет создать первичный ключ

create table user (
id int ,
phone_number int,
primary key(id))

, но так как красное смещение не обеспечивает соблюдение этого ограничения, первичный ключ принимает повторяющиеся значения.

Прилагаемая статья по этому вопросу

Http://www.sqlhaven.com/amazon-redshift-what-you-need-to-think-before-defining-primary-key/

Вы можетеопределить ограничения , но они будут только информационными, как говорит Amazon: они не применяются Amazon Redshift. Тем не менее, первичные и внешние ключи используются в качестве подсказок по планированию, и они должны быть объявлены, если ваш процесс ETL или какой-либо другой процесс в вашем приложении обеспечивает их целостность.

Некоторым службам, таким как конвейеры с режимом вставки (REPLACE_EXISTING), потребуется первичный ключ, определенный в таблице.

Для других целей исполнения Стюарта ответ правильный.

Comments

    Ничего не найдено.