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