Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Проектирую БД, где пользователи логинятся по номеру телефона. Разумеется хотел сделать первичный ключ - номер телефона. Но набрел на http://www.mysql.ru/docs/man/Data_size.html (5й пункт) "Первичные индексы в таблице должны быть как можно короче. Это делает идентификацию конкретной записи простой и эффективной." и задумался, номер телефона это 12+ символов.
Или в данном случае это не актуально, ибо все равно придется строить индекс по номеру телефона т.к. с ним в основном придется работать?
Спасибо.
Отредактированно furyon (14.12.2014 13:40:29)
Неактивен
12 символов - это не много, так что можно считать коротким. Главное, сделайте его latin1, чтобы он не занимал 36 байт, как это будет в случае utf8.
Неактивен
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)
Неактивен
latin1_swedish_ci - это сопоставление (collation), а не кодировка. Чтобы поменять кодировку, выполните такой запрос:
Неактивен