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

мне нужно тщательно выбирать тип данных для моих столбцов базы данных mysql, или я могу установить значения varchar (99999) без ограничения размера без ущерба для эффективности?

спасибо:)

Ответы [ 5 ]

3 голосов
/ 22 ноября 2010

Выберите типы данных, которые представляют данные, которые вы храните.Если вы храните числа, используйте типы данных, предназначенные для хранения чисел.Если вы храните даты, используйте типы данных, предназначенные для хранения дат.

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

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

(Как примечание: тип VARCHAR (99999) не существует в MySQL -- максимальная длина поля VARCHAR составляет 255, поскольку для хранения длины каждого VARCHAR в записи используется только один байт.)

3 голосов
/ 22 ноября 2010

Я обнаружил, что лучше точно определять типы столбцов при разработке новой таблицы.Например, это помогает убедиться, что в столбец вводится только число, в котором должен быть только номер, как в цене.Что бы сделал ваш код, если бы он пытался работать с суммой в долларах, и он получил 'Asd $% * @)', потому что пользователь мог ввести любую строку произвольной формы в?

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

2 голосов
/ 22 ноября 2010

Несомненно, для нетривиальных баз данных типы данных очень важны.

Для функциональных возможностей mysql (например, функции времени, строки или агрегатных функций) важно выбрать правильные типы данных.

Для функциональных возможностей схемы (например, объединение) важно выбрать правильные типы данных.

Для производительности учитывается каждый байт каждого поля.

База данных всех длинных varchars будет достойна сожаления.

Администраторы баз данных существуют по причине.:)

2 голосов
/ 22 ноября 2010

Вы также можете использовать select * from your_table procedure analyse(2, 5) (скорректировать числа для вашего удобства), чтобы иметь представление о том, как MySQL считает, что ваши таблицы должны быть.

2 голосов
/ 22 ноября 2010

Зависит от того, что вы хотите сделать. В целях сортировки вы хотите, чтобы целые числа были сохранены как целые числа, я бы сказал :) Для небольших баз данных вы, вероятно, не сильно пострадаете от превращения всего в varchar.

...