Ответ 1
Если вы попытаетесь создать индекс (с именем) в таблице Redshift:
create index IX1 on "SomeTable"("UserId");
Вы получите сообщение об ошибке
При выполнении команды SQL произошла ошибка: создайте индекс IX1 в "SomeTable" ( "UserId" ) ERROR: команда SQL "создать индекс IX1 в" SomeTable "(" UserId ")" не поддерживается в таблицах Redshift.
Это потому, что, как и другие хранилища данных , Redshift использует хранилище столбцов , и, как результат, многие из методов индексирования (например, добавление некластеризованных индексов), используемых в других СУБД, неприменимы.
Однако у вас есть возможность предоставить один ключ для каждой таблицы, а также вы можете влиять на производительность с помощью ключ распространения для отображения ваших данных и выбора подходящих кодировок сжатия для каждого столбца, чтобы минимизировать затраты на хранение и накладные расходы ввода-вывода.
Например, в вашем случае вы можете выбрать UserId
в качестве ключа сортировки:
create table if not exists "SomeTable"
(
"UserId" int,
"Name" text
)
sortkey("UserId");
Возможно, вам захочется прочитать несколько праймеров как .