Какие типы столбцов MySQL наиболее эффективны для этих данных? - PullRequest
3 голосов
/ 22 мая 2010

У меня есть несколько таблиц с довольно стандартными данными в каждой.Может ли кто-нибудь помочь мне оптимизировать их, предложив лучшие типы столбцов для этих данных.Что у них есть, это то, что у меня сейчас есть.

Number (max length 7) --> MEDIUMINT(8) Unsigned
Text (max length 30) --> VARCHAR(30)
Text (max length 200) --> VARCHAR(200)
Email Address (max length 200) --> VARCHAR(200)
Number (max length 4) --> SMALLINT(5) Unsigned
Number (either 0 or 1) --> TINYINT(1) Unsigned
Text (max length 500) --> TEXT

Есть предложения?Я просто догадываюсь с этим, поэтому я знаю, что некоторые из них не правы ...

Ответы [ 4 ]

1 голос
/ 22 мая 2010

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

Для VARCHAR типов, как вы, вероятно, уже знаете, он ограничивает максимальную длину. Однако это не влияет на количество байтов, используемых для хранения конкретной строки. Для строки длиной 5 потребуется одинаковое количество байтов, независимо от того, хранится ли она в VARCHAR(100) или VARCHAR(200).

Для целочисленных типов число не имеет никакого отношения к количеству байтов памяти. Это ширина дисплея, а это нечто другое. См. руководство :

Другое расширение поддерживается MySQL для необязательного указания ширины отображения целочисленных типов данных в скобках после ключевого слова base для типа (например, INT (4)). Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем добавления их слева с пробелами. (То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Независимо от того, используется она или нет, зависит от приложения.)

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

0 голосов
/ 22 мая 2010

Зависит от вашего определения «эффективный». Для скорости CHAR может быть быстрее, чем VARCHAR (поскольку каждая строка заканчивается одинаковой длины, что упрощает поиск определенной записи). Но все ваши поля должны иметь фиксированную длину или не беспокоить.

0 голосов
/ 22 мая 2010

У вас это уже довольно разумно.

Обратите внимание, что вы ничего не можете оптимизировать с типами столбцов. С индексами вы делаете.

0 голосов
/ 22 мая 2010
Number (either 0 or 1) --> TINYINT(1) Unsigned

Это должно быть логическое значение.

...