@Ross Smith II, el punto 4 vale oro, lo que significa que la inconsistencia entre las columnas puede ser peligrosa.
para añadir valor a las ya buenas respuestas, aquí es una pequeña prueba de rendimiento sobre la diferencia entre los conjuntos de caracteres:
Un moderno 2013 del servidor, el uso real de mesa con 20000 filas, sin índice en la columna en cuestión.
SELECCIONE 4 DE subscribers
DONDE 1 PEDIDO POR time_utc_str
; (4 es destructor de caché)
- varchar (20) conjunto de caracteres COTEJO latin1 latin1_bin: 15 ms
- varbinary (20): 17ms
- utf8_bin: 20 ms
- utf8_general_ci: 23 ms
Para cadenas simples como fechas numéricas, mi decisión sería, cuando se trata de rendimiento, usar utf8_bin (CHARACTER SET utf8 COLLATE utf8_bin). Esto evitaría cualquier efecto adverso con otro código que espera que los conjuntos de datos sean utf8 mientras siguen siendo de tipo binario.
Utilice siempre 'utf8mb4' y no' utf8' - [es un tipo de error de MySQL] (https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434) – xmedeko