Может ли первичный индекс быть CHAR в MySQL? - PullRequest
5 голосов
/ 18 февраля 2010

Моими первичными индексами являются уникальные ссылочные номера, такие как 002345 и 000023.

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

Могу ли я использовать CHAR? Мне не нужны автоматические приращения.

Ответы [ 3 ]

6 голосов
/ 18 февраля 2010

Да, вы можете использовать столбец CHAR в качестве первичного ключа в MySQL.

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

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

1 голос
/ 18 февраля 2010

Вы можете использовать номера заказа в качестве первичного ключа. Но однажды ваш начальник позвонит вам и сообщит, что номер заказа, отправленного вашему наиболее важному клиенту, был напечатан как 002346, а не 002345, и что они не могут получать платежи, пока эта ошибка не будет исправлена ​​в вашей системе ...

Вы должны также рассмотреть целочисленный первичный ключ, так как он сэкономит место и соединения будут быстрее.

1 голос
/ 18 февраля 2010

Я только что проверил на локальном MySQL - он отлично работает.Но для некоторого повышения производительности я бы пошел на целочисленный первичный индекс.

...