Intereting Posts

Для баз данных выбор правильного типа данных влияет на производительность?

И если да, то почему? Я имею в виду, быстрее ли искать поиск, чем int?

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

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

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

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

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

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

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

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

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

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

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

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

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

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