бит (8) против tinyint - PullRequest
       2

бит (8) против tinyint

0 голосов
/ 10 июля 2011

С точки зрения механизма хранения, есть ли разница между bit(8) и tinyint?

или bit(16) против smallint?

или bit(24) vs mediumint?

или bit(32) против int?

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

1 Ответ

1 голос
/ 10 июля 2011

Прежде всего: я не имею представления о том, как отдельные движки будут обрабатывать битовые поля при попытке выполнить запросы.Мне было бы любопытно, если бы было быстрее индексировать или запрашивать эти два типа столбцов.

С точки зрения необработанного хранения, это требования к хранилищу для числовых типов :

  • TINYINT = 1 байт
  • SMALLINT = 2 байта
  • MEDIUMINT = 3 байта
  • INT, INTEGER = 4 байта
  • BIGINT = 8 байтов
  • FLOAT (p) = 4 байта, если 0 <= p <= 24, 8 байтов, если 25 <= p <= 53 FLOAT = 4 байта </li>
  • DOUBLE
    [ТОЧНОСТЬ],REAL = 8 байт
  • DECIMAL (M, D), NUMERIC (M, D) = различается;см. следующее обсуждение
  • BIT (M) =
    приблизительно (M + 7) / 8 байт

Если вы не используете механизм хранения NDBCluster, для которого требуется 4 байта на запись хранения,(если у вас нет нескольких типов битов, которые сжимаются в этот минимум 4 байта)

Редактировать:

Согласно эта страница с числовыми типами tinyint (1) и битамисиноним до версии 5.0.3 для myISAM и 5.0.5 для MEMORY, InnoDB, BDB и NDBCLUSTER.Это означало бы, что они больше не являются.

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