В MySQL я могу иметь составной первичный ключ, состоящий из автоматического приращения и другого поля? Также, пожалуйста, критикуйте мою логику "разбиения по MySQL" - PullRequest
1 голос
/ 29 мая 2011

Я экспериментирую с секционированием mysql (разбиваю таблицу, чтобы улучшить ее масштабирование), и у меня возникла проблема с ключами на столе. Во-первых, я использую модуль поточных комментариев Python ... вот схема

+-----------------+------------------+------+-----+---------+-------+
| Field           | Type             | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+-------+
| content_type_id | int(11)          | NO   | MUL | NULL    |       |
| object_id       | int(10) unsigned | NO   |     | NULL    |       |
| parent_id       | int(11)          | YES  | MUL | NULL    |       |
| user_id         | int(11)          | NO   | MUL | NULL    |       |
| date_submitted  | datetime         | NO   |     | NULL    |       |
| date_modified   | datetime         | NO   |     | NULL    |       |
| date_approved   | datetime         | YES  |     | NULL    |       |
| comment         | longtext         | NO   |     | NULL    |       |
| markup          | int(11)          | YES  |     | NULL    |       |
| is_public       | tinyint(1)       | NO   |     | NULL    |       |
| is_approved     | tinyint(1)       | NO   |     | NULL    |       |
| ip_address      | char(15)         | YES  |     | NULL    |       |
| id              | int(11)          | YES  |     | NULL    |       |
+-----------------+------------------+------+-----+---------+-------+

Обратите внимание, я изменил эту базу данных, удалив id col (основной по умолчанию) и повторно добавив его.

По сути, я хочу, чтобы в качестве моих первичных ключей использовался идентификатор AND content_type_id. Я также хочу, чтобы идентификатор для автоматического увеличения. Возможно ли это.

Второй вопрос. Так как я только изучаю разделение mysql, мне интересно, правильна ли моя логика разделения. Существует 67 различных типов контента, и некоторые (возможно, все) из этих типов контента позволяют комментировать их. Мой план состоит в том, чтобы разделить на основе типа объекта, который комментируется. Например, изображения будут комментироваться много, поэтому я поместил любой тип контента, относящийся к изображениям, в один раздел, а другой тип контента, который можно прокомментировать, - это «записи блога», так что для этого есть отдельный раздел, и и так далее. Это позволит мне распределить эти разделы, возможно, по выделенным машинам по мере роста нагрузки. Каково мое понимание этой концепции до сих пор?

Большое спасибо!

1 Ответ

1 голос
/ 31 мая 2011

Поскольку идентификатор будет автоматически увеличиваться, он может быть первичным ключом сам по себе.Добавление content_type к первичному ключу ничего не даст вам в отношении уникальности ключа.

Если вы хотите добавить индекс для более быстрой производительности в 2 столбца, то добавьте альтернативный уникальный индекс в таблицус 2 столбцами вместо того, чтобы пытаться добавить их оба к первичному ключу.Однако следует помнить, что обеспечение уникальности для двух столбцов было бы бесполезным, поскольку идентификатор уже гарантированно сам по себе является уникальным, поэтому при необходимости регулярный индекс будет иметь больше смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...