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

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

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

5
задан Citizen 12 April 2010 в 15:11
поделиться

7 ответов

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

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

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

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

7
ответ дан 18 December 2019 в 09:06
поделиться

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

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

1
ответ дан 18 December 2019 в 09:06
поделиться

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

3
ответ дан 18 December 2019 в 09:06
поделиться

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

3
ответ дан 18 December 2019 в 09:06
поделиться

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

2
ответ дан 18 December 2019 в 09:06
поделиться

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

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

1
ответ дан 18 December 2019 в 09:06
поделиться

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

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

1
ответ дан 18 December 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: