SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.12.2014 13:39:32

furyon
Участник
Зарегистрирован: 23.11.2014
Сообщений: 5

Номер телефона в качестве первичного ключа

Здравствуйте!

Проектирую БД, где пользователи логинятся по номеру телефона. Разумеется хотел сделать первичный ключ - номер телефона. Но набрел на http://www.mysql.ru/docs/man/Data_size.html (5й пункт) "Первичные индексы в таблице должны быть как можно короче. Это делает идентификацию конкретной записи простой и эффективной." и задумался, номер телефона это 12+ символов.
Или в данном случае это не актуально, ибо все равно придется строить индекс по номеру телефона т.к. с ним в основном придется работать?
Спасибо.

Отредактированно furyon (14.12.2014 13:40:29)

Неактивен

 

#2 14.12.2014 15:04:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Номер телефона в качестве первичного ключа

12 символов - это не много, так что можно считать коротким. Главное, сделайте его latin1, чтобы он не занимал 36 байт, как это будет в случае utf8.

Неактивен

 

#3 14.12.2014 15:46:13

furyon
Участник
Зарегистрирован: 23.11.2014
Сообщений: 5

Re: Номер телефона в качестве первичного ключа

rgbeast написал:

12 символов - это не много, так что можно считать коротким. Главное, сделайте его latin1, чтобы он не занимал 36 байт, как это будет в случае utf8.

Спасибо!
Только вот по поводу latin1, сделал, заново заполнил базу теми же данными, размер остался точно тем-же. Или я что-то не так делаю: тип varchar(15), latin1_swedish_ci. Размер определяю экспортировав табличку из PhpMyAdmin, и пробовал "SHOW TABLE STATUS LIKE  'users'". Данные в поле что-то вроде "+79039199999".

Отредактированно furyon (14.12.2014 15:57:23)

Неактивен

 

#4 14.12.2014 16:06:34

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Номер телефона в качестве первичного ключа

latin1_swedish_ci - это сопоставление (collation), а не кодировка. Чтобы поменять кодировку, выполните такой запрос:

ALTER TABLE my_table MODIFY my_column varchar(15) charset latin1;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson