Por favor, consulte estas publicaciones:
Consejos para hacer que sus datos sean lo más pequeños posible:
Diseñe sus tablas para minimizar su espacio en el disco. Esto puede generar grandes mejoras al reducir la cantidad de datos escritos y leídos del disco. Las tablas más pequeñas normalmente requieren menos memoria principal mientras su contenido se procesa activamente durante la ejecución de la consulta. Cualquier reducción de espacio para los datos de la tabla también da como resultado índices más pequeños que pueden procesarse más rápido.
MySQL admite muchos motores de almacenamiento diferentes (tipos de tabla) y formatos de fila. Para cada tabla, puede decidir qué método de almacenamiento e indexación usar. Elegir el formato de tabla adecuado para su aplicación puede brindarle una gran ganancia de rendimiento.
Puede obtener un mejor rendimiento para una tabla y minimizar el espacio de almacenamiento utilizando las técnicas enumeradas aquí: - Utilice los tipos de datos más eficientes (más pequeños) posibles. MySQL tiene muchos tipos especializados que ahorran espacio en disco y memoria. Por ejemplo, use los tipos enteros más pequeños si es posible para obtener tablas más pequeñas. MEDIUMINT suele ser una mejor opción que INT porque una columna MEDIUMINT utiliza un 25% menos de espacio.
Declare que las columnas NO SON NULAS si es posible. Hace que todo sea más rápido y ahorras un bit por columna. Si realmente necesita NULL en su aplicación, definitivamente debe usarlo. Simplemente evite tenerlo en todas las columnas de forma predeterminada.
Para las tablas MyISAM, si no tiene columnas de longitud variable (columnas VARCHAR, TEXT o BLOB), se utiliza un formato de fila de tamaño fijo.
Las tablas InnoDB usan un formato de almacenamiento compacto. En las versiones de MySQL anteriores a 5.0.3, las filas de InnoDB contienen información redundante, como el número de columnas y la longitud de cada columna, incluso para columnas de tamaño fijo. Por defecto, las tablas se crean en formato compacto (ROW_FORMAT = COMPACT). La presencia del formato de fila compacto disminuye el espacio de almacenamiento de fila en aproximadamente un 20% a costa de aumentar el uso de la CPU para algunas operaciones. Si su carga de trabajo es típica y está limitada por las tasas de aciertos de caché y la velocidad del disco, es probable que sea más rápida. Si es un caso raro que está limitado por la velocidad de la CPU, podría ser más lento.
El formato compacto InnoDB también cambia la forma en que se almacenan las columnas CHAR que contienen datos UTF-8. Con ROW_FORMAT = REDUNDANT, un CHAR UTF-8 (N) ocupa 3 × N bytes, dado que la longitud máxima de un carácter codificado UTF-8 es de tres bytes. Muchos idiomas se pueden escribir principalmente utilizando caracteres UTF-8 de un solo byte, por lo que una longitud de almacenamiento fija a menudo desperdicia espacio. Con el formato ROW_FORMAT = COMPACT, InnoDB asigna una cantidad variable de almacenamiento en el rango de N a 3 × N bytes para estas columnas eliminando espacios finales si es necesario. La longitud mínima de almacenamiento se mantiene como N bytes para facilitar las actualizaciones in situ en casos típicos.
El índice primario de una tabla debe ser lo más corto posible. Esto hace que la identificación de cada fila sea fácil y eficiente
Cree solo los índices que realmente necesita. Los índices son buenos para recuperar pero malos cuando necesita almacenar datos rápidamente. Si accede a una tabla principalmente buscando en una combinación de columnas, cree un índice sobre ellas. La primera parte del índice debería ser la columna más utilizada. Si siempre usa muchas columnas al seleccionar de la tabla, la primera columna del índice debe ser la que tenga más duplicados para obtener una mejor compresión del índice.
En algunas circunstancias, puede ser beneficioso dividir en dos una tabla que se escanea con mucha frecuencia. Esto es especialmente cierto si se trata de una tabla de formato dinámico y es posible utilizar una tabla de formato estático más pequeña que se puede utilizar para encontrar las filas relevantes al escanear la tabla.