Рекомендуемые типы и длины SQL - PullRequest
0 голосов
/ 21 июля 2011

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

Для этих трех столбцов, я думаю, я уже понял это:

username: VARCHAR(20)
password: VARBINARY(16) for MD5-Hashes
email: VARCHAR(70)

Что делатьВы думаете об этом?

Кроме того, будет много более гибких данных (данных сохраненных игр), которые я не могу предсказать.Было бы разумно сохранить эти данные в виде данных XML в поле типа TEXT?Или есть лучший способ сохранить его (используя PHP)?

Спасибо.Rob

Ответы [ 3 ]

0 голосов
/ 21 июля 2011

Не храните XML в текстовом поле. Используйте другой механизм базы данных - тот, который позволяет вам хранить произвольные неструктурированные данные. (Посмотрите вверх nosql)

0 голосов
/ 21 июля 2011

Я согласен, что длина адреса электронной почты слишком мала, если вы включаете также доменные имена.Возможно, вы захотите определить максимальную длину Gmail.

Также вам лучше сохранить данные игры в виде файла и сохранить путь в базе данных.Всегда плохая идея иметь большие данные на столе.

Это особенно верно, когда вы используете индексы в механизме хранения mySQL innoDB, где используется кластерный индекс, а содержимое строк хранится в индексе.Индекс станет очень большим и неэффективным.

Также запросы, включающие SELECT / INSERT / UPDATE, также станут очень медленными, особенно последние 2.

0 голосов
/ 21 июля 2011

Несколько советов:

  • Как можно чаще используйте наименьший возможный тип (например, tinyint вместо просто int)
  • Если у вас естьстрока фиксированной длины, используйте символ, а не varchar (для вашего md5, например)

Примечание, более касающееся вашего конкретного случая:

  • 70символов для адреса электронной почты немного не хватает
  • Сохранить данные игры> Возможно, я бы использовал поле TEXT или BLOB.
...