Для баз данных, выбор правильного типа данных влияет на производительность? - PullRequest
5 голосов
/ 12 апреля 2010

А если так, то почему? Я имею в виду, является ли миниатюрный поиск быстрее, чем int?

Если да, то каковы практические различия в производительности?

Ответы [ 7 ]

7 голосов
/ 12 апреля 2010

В зависимости от типов данных, да, это имеет значение.

int против tinyint не окажет заметного влияния на скорость, но это повлияет на размеры данных. Предполагая, что tinyint равен 1 байту, а int равен 4, то есть 3 байта сохраняются в каждой строке. это складывается через некоторое время.

Теперь, если бы оно было int против varchar, тогда было бы небольшое падение, поскольку такие вещи, как сортировки, были бы намного быстрее для целочисленных значений, чем строковые значения.

Если это сопоставимый тип, и вы не очень нуждаетесь в нехватке места, выбирайте тот, который проще и надежнее.

3 голосов
/ 12 апреля 2010

Рискну предположить, что в этом случае практических различий в производительности нет. Место для хранения является более существенным фактором, но даже тогда, это не так много различий. Разница может быть 2 байта? После 500 000 строк вы почти использовали лишний мегабайт. Надеюсь, вы не ущипните мегабайты, если работаете с таким количеством данных.

3 голосов
/ 12 апреля 2010

Теоретически да, tinyint быстрее, чем int. Но хороший дизайн базы данных и правильное индексирование оказывают гораздо более существенное влияние на производительность, поэтому я всегда использую int для простоты проектирования.

2 голосов
/ 12 апреля 2010

Выбор правильного типа данных может повысить производительность. Во многих случаях практическое различие может быть небольшим, но плохой выбор, безусловно, может оказать влияние. Представьте себе, что вы должны использовать 1000-символьное поле вместо поля varchar, когда вы собираетесь хранить строку из нескольких символов. Это немного экстремальный пример, но вам наверняка будет намного лучше, если вы используете varchar. Вы, вероятно, никогда не заметите разницу в производительности между int и tinyint. Ваш общий дизайн базы данных (нормализованные таблицы, хорошие показатели и т. Д.) Окажет гораздо большее влияние.

1 голос
/ 13 апреля 2010

Один из способов повлиять на производительность - не требовать преобразования его в правильный тип для манипулирования данными.Это верно, когда кто-то использует varchar, например, вместо типа данных datetime, а затем он должен быть преобразован для вычисления даты.Это также может повлиять на производительность, предоставляя меньшую запись (поэтому не следует определять все в максимальном размере), что влияет на то, как страницы хранятся и извлекаются в базе данных.

Конечно, использование правильного типа данных также может помочь сохранить целостность данных;Вы не можете сохранить дату, которая не существует в поле даты и времени, но вы можете сохранить в поле varchar.Если вы используете float вместо int, тогда ваши значения не ограничиваются целочисленными значениями и т. Д. Говоря о float, обычно плохо использовать, если вы собираетесь выполнять математические вычисления, когда получаете ошибки округления, так как это не точный тип.

1 голос
/ 12 апреля 2010

Производительность зависит от масштаба вашей модели и использования. В то время как рассмотрение пространства хранения в наше время почти не является проблемой, вам, возможно, придется подумать о производительности:

Механизмы баз данных, как правило, хранят данные в блоках, называемых страницами. Sql Server имеет 8k страниц, Oracle 2k и MySql 16k по умолчанию? Не такой большой для любой из этих систем. Всякий раз, когда вы выполняете операцию с битом данных (полем и строкой), вся его страница извлекается из БД и помещается в память. Когда ваши данные меньше (крошечные int или int), вы можете разместить на странице больше отдельных строк и элементов данных, и, следовательно, вероятность того, что вам понадобится извлечь больше страниц, снизится, а общая производительность увеличится. Так что да, использование наименьшего возможного представления ваших данных, безусловно, окажет влияние на производительность, поскольку позволяет повысить эффективность механизма обработки данных.

1 голос
/ 12 апреля 2010

Конечно, выбор правильных типов данных всегда помогает в более быстром выполнении

Загляните в эту статью, она вам наверняка поможет: http://www.peachpit.com/articles/article.aspx?p=30885&seqNum=7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...