Самый большой целочисленный цифровый тип данных в MySQL — BIGINT, вмещает 8 байт. Если бы это был строковый тип данных, то каждый из этих восьми байт мог бы принимать значение одного из 256 стандартных символов.

В имени домена может быть использовано 26 букв латинского алфавита, 10 цифр, точка и дефис — итого 38 символов. Каким бы особенным не было имя домена, из 256 символов таблицы ASCII используется только 38.

Значит, в один байт, вместо 1-го из возможных 256 символов, мы можем сохранить 6 из 38 символов (256/38≈6). Соответственно, в 8 байт можно поместить 53 символа (8*256/38≈53).

З.Ы. Обратите внимание на дату поста. ;)



6 Responses to “Имя домена в поле типа BIGINT”  

  1. 1 photon

    2Соответственно, в 8 байт можно поместить 53 символа

    Что, в принципе, очень много. Как показывает статистика, подавляющее большинство доменов имеет размер меньше 26 символов. таким образом мы можем хранить домены не только в бигинт, но и в просто инт. Представляете как можно сэкономить на месте на сервере? :D

  2. 2 Ugnich Anton

    2photon: между int и bigint разницы особой нет. По крайне мере, такой разницы, как между bigint и char(53). :)
    И дело даже не в экономии места. bigint-поле можно использовать в качестве ключа таблицы, значения такого типа очень просто и быстро сравнивать. Применений масса.

  3. 3 Alex B

    Как это ты сохранишь в 1 байт 6 из 38 символов?
    В 8 байт (64 бита) без проблем можно сохранить 10 символов (из 38): 8*8/6 (6 бит для хранения 1 из 38 символов).

    Таки да :) 1-е апреля :)

  4. 4 Ugnich Anton

    2Alex B: ты возродил мою веру в человечество! :) Хоть кто-то ещё про биты помнит и считать умеет. :) Типа респект! ;)

  5. 5 Begemot

    Так шутить не честно! :) Если бы не полез читать комменты, так бы и остался в уверенности что это действительно можно. После обеда, сижу расслабленный, считать лень. Поэтому rss и читаю вместо работы.

  6. 6 Виктор

    Удачно — я до тех слов подумал что это на самом деле!

Leave a Reply