Титла: Mysql - INTEGER, BIGINT или DECIMAL ? Публикувано от: Naka в May 25, 2011, 11:14 Чудя се как е по ефективно да се реализира:
Имам поле в БД 'bytes' - отчита трафик в байтове, на определена услуга ;D правя си сметките колко голямо трябва да бъде полето: INT UNSIGNED 4 294 967 295 - 4 байта BIGINT UNSIGNED (xxxxxxx.........xxxxx) - 8 байта но INT UNSIGNED ми е малко - трябва ми само още един десетичен разряд :'( трябва да събера xx xxx xxx xxx - 11 цифри, докато INT UNSIGNED ще събере долу горе 4 2xx xxx xxx - 10 цифри. другата възможност е BIGINT, което е много, много голямо но там вече съхранението става от 4 на 8 байта. В mysql няма и целочислен тип дето да е между INT и BIGINT :'( Мисля си да използвам DECIMAL(11,0). Документацията казва че след mysql 5.0.3 DECIMAL стойностите явно се съхраняват също като целочислените полета - 9 десетични цифри са събират в 4 байта - така че явно нещата са оптимизирани. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html За DECIMAL(11,0) - 5 bytes та диалемата ми е как ще е по бързо и ефективно: BIGINT - 8 байта (много повече от необходимото, по-големи таблици и вероятно малко - по бавно) или DECIMAL(11,0) - 5 байта (минимален размер за съхранение - ще има ускорение от там - но пък може да е по бавно защото се обработват DECIMAL ???) http://stackoverflow.com/questions/2682115/decimal-vs-int-in-mysql |