#yugabyte-db
Вопрос:
[Вопрос, заданный пользователем в сообществе YugabyteDB Slack]
В YSQL, если моя таблица использует первичный ключ, определенный для нескольких столбцов, то каким будет ключ сегментирования в этом случае? Будут ли оба столбца использоваться для вычисления хэша? Кроме того, можем ли мы указать столбцы, которые будут использоваться в качестве ключей разделения / сегментирования, не упоминая их в первичных ключах? Что делать, если одна из таблиц не имеет первичных ключей, но должна быть разделена на один из столбцов?
Ответ №1:
По умолчанию, когда в первичном ключе настроено несколько столбцов, хэшируется первый столбец, а дополнительные столбцы упорядочиваются по возрастанию диапазона. Но у вас есть полный контроль над определением первичного ключа, что означает, что вы можете указать его любым удобным для вас способом: https://docs.yugabyte.com/latest/api/ysql/the-sql-language/statements/ddl_create_table/#primary-key
В настоящее время вы можете сегментировать только столбцы, которые находятся в ПЕРВИЧНОМ КЛЮЧЕ. Если таблица не имеет первичного ключа, неявный создается внутри, и таблица сегментируется на основе этого. Таким образом, рекомендуется всегда создавать первичный ключ.