Mysql
 sql >> база данни >  >> RDS >> Mysql

Трябва ли да се избягва MEDIUMINT в MySQL?

InnoDB съхранява MEDIUMINT като стойност от три байта. Но когато MySQL трябва да извърши някакво изчисление, трите байта MEDIUMINT се преобразуват в осем байта без знак long int (предполагам, че никой не изпълнява MySQL на 32 бита в днешно време).

Има плюсове и минуси, но разбирате, че „Тъп е и е бавен, а кодът, който го прилага, е пълзящ ужас“ не е технически, нали?

Бих казал, че MEDIUMINT има смисъл, когато размерът на данните на диска е критичен. т.е. когато една таблица има толкова много записи, че дори един байт разлика (4 байта INT срещу 3 байта MEDIUMINT) означава много. Това е доста рядък случай, но е възможен.

mach_read_from_3 и mach_read_from_4 - примитиви, които InnoDB използва за четене на числа от InnoDB записи, са сходни. И двамата се връщат Улинт. Обзалагам се, че няма да забележите разлика на никоя натоварване.

Просто погледнете кода:

ulint
mach_read_from_3(
/*=============*/
        const byte*     b)      /*!< in: pointer to 3 bytes */
{
        ut_ad(b);
        return( ((ulint)(b[0]) << 16)
                | ((ulint)(b[1]) << 8)
                | (ulint)(b[2])
                );
}

Мислите ли, че е много по-бавно от това?

ulint
mach_read_from_4(
/*=============*/
        const byte*     b)      /*!< in: pointer to four bytes */
{
        ut_ad(b);
        return( ((ulint)(b[0]) << 24)
                | ((ulint)(b[1]) << 16)
                | ((ulint)(b[2]) << 8)
                | (ulint)(b[3])
                );
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заседнал с отказан достъп за потребител 'root'@'localhost' - терминал, Mac

  2. PHP/Apache:PHP Фатална грешка:Извикване на недефинирана функция mysql_connect()

  3. Как да намекна индекса за използване в заявка за избор на MySQL?

  4. Грешка в MySql:Не може да се актуализира таблицата в съхранената функция/тригера, защото вече се използва от израз, който е извикал тази съхранена функция/тригер

  5. Как да импортирате CSV в MySQL Workbench