Колонку я бы назвал «пол».
Data Type Bytes Taken Number/Range of Values
------------------------------------------------
TinyINT 1 255 (zero to 255)
INT 4 - 2,147,483,648 to 2,147,483,647
BIT 1 (2 if 9+ columns) 2 (0 and 1)
CHAR(1) 1 26 if case insensitive, 52 otherwise
Тип данных BIT может быть исключен, поскольку он поддерживает только два возможных пола, что неадекватно. Хотя INT поддерживает более двух вариантов, он занимает 4 байта - производительность будет лучше с меньшим / более узким типом данных.
CHAR(1)
имеет преимущество перед TinyINT - оба занимают одинаковое количество байтов, но CHAR предоставляет более узкое количество значений. Использование CHAR(1)
приведет к использованию естественных ключей «m», «f» и т. Д. По сравнению с использованием числовых данных, которые называются суррогатными / искусственными ключами. CHAR(1)
также поддерживается в любой базе данных, если возникнет необходимость в переносе.
Вывод
Я бы использовал вариант 2: СИМВОЛ (1).
добавление
Индекс в столбце пола, скорее всего, не поможет, потому что в индексе в столбце с низкой мощностью нет значения. Это означает, что для индекса недостаточно разнообразия значений, чтобы обеспечить какое-либо значение.